Вопрос

Простой вопрос: мне нужно удалить или удалить [] c ? Язык имеет значение?

char c[] = "hello"
Это было полезно?

Решение

В c ++ это не динамическое распределение памяти. delete [] не потребуется.

Ваш пример, по сути, является сокращением для этого:

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

Другие советы

Правило в C ++ заключается в том, что вы используете delete [] всякий раз, когда вы используете new [] , и delete всякий раз, когда вы используете новый . Если вы не используете new , как в вашем примере, вам не нужно удалять .

В вашем примере шесть байтов для массива c размещаются в стеке, а не в куче, если они объявлены внутри функции. Поскольку эти байты находятся в стеке, они исчезают, как только возвращается функция, в которой они объявлены.

Если это объявление находится за пределами какой-либо функции, то эти шесть байтов выделяются в глобальной области данных и остаются в течение всего времени жизни вашей программы.

вы динамически распределяете память, когда кладете что-то в кучу. здесь вы размещаете переменную в стеке. Если бы вы использовали оператор new или вызов malloc, вы бы поместили переменную в кучу.

вам нужно использовать delete (w / new) или free (w / malloc), чтобы освободить память в куче. стек будет освобожден автоматически, когда функция / метод вернется.

Нет, размер массива во время компиляции.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top