Pregunta

Pregunta simple: ¿tengo que eliminar o eliminar [] c ? ¿Importa el idioma?

char c[] = "hello"
¿Fue útil?

Solución

En c ++ eso no es asignación dinámica de memoria. No se necesitará delete [] .

Su ejemplo es básicamente un atajo para esto:

char c[6]={'h','e','l','l','o','\0'};

Otros consejos

La regla en C ++ es que usa delete [] siempre que use new [] , y delete siempre que use nuevo . Si no utiliza new , como en su ejemplo, no necesita eliminar nada.

En su ejemplo, los seis bytes para la matriz c se asignan en la pila, en lugar de en el montón, si se declaran dentro de una función. Dado que esos bytes están en la pila, desaparecen tan pronto como la función donde se declaran se devuelve.

Si esa declaración está fuera de cualquier función, esos seis bytes se asignan en el área de datos globales y se mantienen durante toda la vida útil de su programa.

asignas memoria dinámicamente cuando pones algo en el montón. Aquí, estás asignando la variable en la pila. Si estuviera utilizando el nuevo operador o la llamada a malloc, estaría poniendo la variable en el montón.

necesitas usar delete (w / new) o free (w / malloc) para liberar la memoria del montón. la pila se liberará automáticamente cuando la función / método regrese.

No, la matriz se dimensiona en tiempo de compilación.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top