Это динамическое распределение памяти?
-
05-07-2019 - |
Вопрос
Простой вопрос: мне нужно удалить
или удалить []
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), чтобы освободить память в куче. стек будет освобожден автоматически, когда функция / метод вернется. Р>
Нет, размер массива во время компиляции.