Duda de conceptos relacionados con la asignación de memoria dinámica y punteros

Bad_Coder

En la primera nota: ¡es un concepto nuevo para mí! Estudié punteros y asignaciones de memoria dinámica y ejecuté algún programa recientemente y me preguntaba en la declaración char * p = "Computers" la cadena se almacena en alguna ubicación de memoria y la dirección base, es decir, la dirección inicial de la cadena se almacena en p, ahora Noté que puedo realizar cualquier operación deseada en la cadena, ahora mi duda es por qué usamos una declaración especial como malloc y calloc cuando simplemente podemos declarar una cadena como esta con la longitud deseada.

Si mi comprensión del concepto es incorrecta, explique.

Gracias por adelantado.

Vlad de Moscú

En esta declaración

char*p="Computers";

el puntero pse inicializa con la dirección del primer carácter del literal de cadena "Computers".

Los literales de cadena tienen la duración del almacenamiento estático. No puede cambiar un literal de cadena como por ejemplo

p[0] = 'c';

Cualquier intento de cambiar un literal de cadena da como resultado un comportamiento indefinido.

La función mallocse utiliza para asignar memoria de forma dinámica. Por ejemplo, si desea crear dinámicamente una matriz de caracteres que contendrá la cadena "Computers", debe escribir

char *p = malloc( 10 ); // the same as `malloc( 10 * sizeof( char ) )`
strcpy( p, "Computers" );

Puede cambiar la matriz de caracteres creada. Por ejemplo

p[0] = 'c';

Después de que la matriz ya no sea necesaria, debe liberar la memoria asignada como

free( p );

De lo contrario, el programa puede tener una pérdida de memoria.

Este artículo se recopila de Internet, indique la fuente cuando se vuelva a imprimir.

En caso de infracción, por favor [email protected] Eliminar

Editado en
0

Déjame decir algunas palabras

0Comentarios
Iniciar sesiónRevisión de participación posterior

Artículos relacionados

Punteros vacíos y asignación de memoria dinámica

¿Asignación de memoria dinámica y punteros?

Vector de punteros con asignación de memoria dinámica en C

Problemas con las estructuras anidadas y la asignación de memoria dinámica

Uso de punteros en la asignación de memoria dinámica

Uso de punteros en la asignación de memoria dinámica

Problema con los punteros a la asignación de memoria

Problema con los punteros a la asignación de memoria

Problema con la asignación de memoria en c ++ y punteros

asignación dinámica de memoria compartida para una matriz de datos y punteros a datos en CUDA

Pila, montón y asignación de memoria dinámica

Asignación y eliminación dinámica de memoria

puntero y asignación de memoria dinámica

puntero y asignación de memoria dinámica

¿Estructuras y asignación de memoria dinámica en C?

Ayúdame a transponer la matriz en C (con asignación de memoria dinámica)

El tamaño de la memoria crece exorbitantemente con la asignación dinámica de memoria 2D

¿Cómo funciona la asignación de memoria dinámica?

Asignación de memoria dinámica php

asignación de memoria dinámica segfault

¿Cuál es la diferencia entre la matriz de longitud variable y la asignación de memoria dinámica?

¿Cuál es la diferencia entre la matriz de longitud variable y la asignación de memoria dinámica?

Problema con la asignación de memoria dinámica en una función auxiliar, en un archivo de encabezado

Problema con la asignación de memoria dinámica en una función auxiliar, en un archivo de encabezado

Problema con la asignación de memoria dinámica en una función auxiliar, en un archivo de encabezado

La asignación y eliminación de memoria dinámica básica desencadena una afirmación fallida

La asignación y eliminación de memoria dinámica básica desencadena una afirmación fallida

Matriz de punteros: asignación de memoria

¿Puede tener una matriz dinámica dentro de la lista vinculada y su asignación de memoria?

TOP Lista

CalienteEtiquetas

Archivo