Форум программистов, компьютерный форум CyberForum.ru

delete[] статической памяти - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 20, средняя оценка - 5.00
faridenco
0 / 0 / 0
Регистрация: 08.02.2013
Сообщений: 26
18.05.2013, 03:56     delete[] статической памяти #1
1. Должна ли возникать ошибка (или падение программы) при применении delete[] к статической памяти? У меня (Microsoft Visual Studio 2005) никаких ошибок не возникает. Но, просто, сталкивался с тем, что на некой 64-х разрядной машине (Windows), при запуске моей 32-х разрядной программы (то есть в эмуляторе) она вылетала в месте где используется delete[] к статической переменной. А также встречал в интернете вопросы о ошибке при delete[] статической памяти, но там не указывался компилятор.

2. Если вылетание при delete[] статической памяти возможно, то как узнать какой указатель: на динамическую память или статическую. Теоретически мне это не предсnавляется сложным. Если этого нету в C/C++, то может такая возможность есть в WinApi?
Вот, например, есть в функция в которую передается char*. И эта память освобождается в функции. Но в функцию ведь может быть передана и константа и указатель на статическую память.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.05.2013, 03:56     delete[] статической памяти
Посмотрите здесь:

C++ утечка памяти и delete
C++ освобождение памяти delete
Удаление памяти посредством delete[] C++
C++ Очистка памяти delete[];
delete[] *pointer vs. delete pointer и утечка памяти C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Toshkarik
 Аватар для Toshkarik
1139 / 856 / 50
Регистрация: 03.08.2011
Сообщений: 2,381
Завершенные тесты: 1
21.05.2013, 00:22     delete[] статической памяти #41
Цитата Сообщение от faridenco Посмотреть сообщение
в зависимости от реализации
При чем тут реализация? У меня на 2005 студии данный код падает с тем же сообщением что и у человека в 2008/10/12. WinXP.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
faridenco
0 / 0 / 0
Регистрация: 08.02.2013
Сообщений: 26
21.05.2013, 00:24  [ТС]     delete[] статической памяти #42
Цитата Сообщение от Toshkarik Посмотреть сообщение
При чем тут реализация? У меня на 2005 студии данный код падает с тем же сообщением что и у человека в 2008/10/12. WinXP.
Значит у тебя другая студия. У меня ни при релизе ни при дебаге никаких ошибок нет. А все программы ни разу не вылетали (проверял на разных ОС-х 32-х битных, и на XP).
DU
1477 / 1053 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
21.05.2013, 00:25     delete[] статической памяти #43
если программа не падает - это не значит что ошибки нет. она возможно не успела проявиться.
если никаких видимых последствий неправильного вызова delete нет, это не значит что при вызове ничего не происходило и не была допущена ошибка. она возможно не успела проявиться. чтобы утверждать, что ничего не происходит, берите дизасемблер, смотрите что там нагенерилось и если найдете всякого рода проверки и игнорирование вызова - тогда можно говорить о том, что данный конкретный компилятор с конкретными опциями компиляции в конкретной ситуации ничего не делает. можете заложиться на эту "фичу" - флаг вам в руки.
grizlik78
Эксперт C++
 Аватар для grizlik78
1882 / 1414 / 101
Регистрация: 29.05.2011
Сообщений: 2,958
21.05.2013, 00:27     delete[] статической памяти #44
Цитата Сообщение от faridenco Посмотреть сообщение
Это означает, что поведение стандартом не определено.
Ну да, ну да. Разыменование нулевого указателя, выходит, тоже не ошибка. Применяй почаще.
faridenco
0 / 0 / 0
Регистрация: 08.02.2013
Сообщений: 26
21.05.2013, 00:28  [ТС]     delete[] статической памяти #45
DU, как я понял тут говорят об ошибках при компиляции и при отладке.

Ну я эту "фичу" уже в любом случае не буду ипользовать, после того как узнал, как это отрабатывают компиляторы Microsoft. Думал, может есть какая то стабильная линия поведения у этих реализаций. А никаких настроек особых я не ставил в своей студии.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.05.2013, 00:40     delete[] статической памяти
Еще ссылки по теме:

Переменные в статической и динамической памяти! C++
C++ Выделение статической памяти, не используя статические объекты
C++ Возможно ли обращение к статической памяти функции извне?

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
daslex
1084 / 494 / 101
Регистрация: 02.08.2011
Сообщений: 2,408
21.05.2013, 00:40     delete[] статической памяти #46
Цитата Сообщение от faridenco Посмотреть сообщение
Перечитай всю ветку и не тормози (или хотя бы мои сообщения
faridenco,
Сообщений: 24
Репутация: 0 (0)
===========
Нет, спасибо, я предпочту всех их

Не по теме:

alsav22,
Croessmah,
taras atavin, (этого не всегда)
Убежденный,
ForEveR,
Toshkarik,
Tulosba,
grizlik78,

Yandex
Объявления
21.05.2013, 00:40     delete[] статической памяти
Ответ Создать тему
Опции темы

Текущее время: 11:36. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru