[C con Clase] si, esta bien, stl, ¿es la única manera?

Sorcerer sorcerer.cl en gmail.com
Mie Ene 17 03:01:16 CET 2007


El pasado 2007-01-16 22:36:48, Steven Davidson escribió:
 
SD> S> Y en el caso de inicializar el puntero con una cadena de carácteres, por
SD> S> ejemplo:
SD> S> char *p = "Cadena";
SD> S> Ahí si se reserva la memoria automáticamente ?
SD> Aquí sí. El compilador reserva memoria y manipula la cadena de caracteres "Cadena". Luego, se crea el puntero 'p' que se inicializa a la dirección de memoria del primer carácter de la cadena literal.

Eso me lleva a otra duda...
El compilador reserva memoria ¿dinámica? para la cadena de carácteres ?. O sea, al final del programa debería liberarla con delete[] ?.
O en el caso de que cambie el valor de ese puntero para que apunte a otra cadena de carácteres, debería liberar la cadena anterior con delete[] ?

Sobre lo del puntero **p. Claro, si yo pruebo a hacer literalmente algo como:

**p = { "Cadena 1", "cadena 2" }

el compilador me da error. Pero en la función main ponen *argv[] o **argv, cualquiera de los 2. Entonces pensé que tal vez en casos especiales el compilador si reservaba memoria para el **p.

Hablando de la función main... también tengo otra duda con eso xD
Mhhh, más bien es una observación. Siempre dicen que hay que hacer esto:

> main(int argc, char *argv[])

y yo he probado cambiando esos nombres, por ejemplo:

> main(int holi, char *chau[])

y me funciona sin problemas, ni siquiera un warning (uso el Dev-C++).

Supongo que esta mal el usar otros nombres, pero por qué?, algún compilador podría dar error ?, o realmente el programa funciona mal y yo no me doy cuenta por probar con ejemplos muy simples ?

Gracias por la ayuda :-)


Más información sobre la lista de distribución Cconclase