Освобождение указателя, который указывает на статический массив - PullRequest
2 голосов
/ 13 декабря 2010

У меня есть следующий массив, объявленный в заголовочном файле.

static const float elementsArray[300] = { ... };

Я хочу сделать:

float *elementsPointer = &elementsArray[0];

Я уверен, что могу это сделать, но ... Нужно ли мне выпускать elementsPointer с delete?

Мне нужно сделать что-нибудь еще?

Спасибо.

Ответы [ 3 ]

5 голосов
/ 13 декабря 2010

Нужно ли освобождать элементы указателя со свободным

С точностью до наоборот - вы должны не освобождать это конкретное значение указателя, поскольку оно не было присвоено malloc() или calloc().

Если этому указателю иногда может быть присвоено значение, которое было выделено динамически, вам нужно организовать (возможно, с флагом) вызов free() только с этими блоками памяти (если код, использующий elementsPointer, отвечает за освобождая эту память).

5 голосов
/ 13 декабря 2010

Нет. Память, на которую указывает elementsPointer, статически выделяется и не требует вызова free.

2 голосов
/ 13 декабря 2010

Не выпускать elementsPointer; elementsArray все еще существует. Фактически, вы не можете free() любой статически объявленный массив.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...