Red de conocimiento informático - Computadora portátil - Problemas con el almacenamiento de datos C en la memoria

Problemas con el almacenamiento de datos C en la memoria

Para las matrices de cadenas char str[] y const char str[], la memoria asignada para el contenido de la cadena varía dependiendo del alcance de la variable de la matriz (donde está definida), si está definida dentro de una función (es decir, como variable local) , se almacenará en la pila; si está definido globalmente, se almacenará en el área de datos estáticos.

Para los punteros a las cadenas char *str y const char *str, la variable del puntero en sí se colocará en la pila o en el área de datos estáticos de acuerdo con su alcance, pero obviamente queremos mirar el carácter al que apunta. por la posición de la cadena del puntero.

Para const char *str, dado que es un puntero a una cadena constante, la cadena a la que apunta debe especificarse al escribir el programa y no se puede modificar. Por ejemplo, const char *str="¡Hola mundo!", la cadena "¡Hola mundo!" se almacena en el área constante literal y el valor del puntero str es la dirección de memoria del primer carácter.

Para char *str, el método de uso es más flexible. Puede apuntar a una cadena constante en el código del programa, como char *str="Hello World!", y esta cadena se almacena en. el texto En el área constante también puede asignar dinámicamente memoria para el puntero str cuando el programa se está ejecutando, como str = malloc (sizeof(char)*10); y otras cadenas diversas para ello. Todas las operaciones se realizan en el montón.