0 / 0 / 0
Регистрация: 08.02.2013
Сообщений: 26
|
|
1 | |
delete[] статической памяти18.05.2013, 03:56. Показов 7281. Ответов 45
Метки нет (Все метки)
1. Должна ли возникать ошибка (или падение программы) при применении delete[] к статической памяти? У меня (Microsoft Visual Studio 2005) никаких ошибок не возникает. Но, просто, сталкивался с тем, что на некой 64-х разрядной машине (Windows), при запуске моей 32-х разрядной программы (то есть в эмуляторе) она вылетала в месте где используется delete[] к статической переменной. А также встречал в интернете вопросы о ошибке при delete[] статической памяти, но там не указывался компилятор.
2. Если вылетание при delete[] статической памяти возможно, то как узнать какой указатель: на динамическую память или статическую. Теоретически мне это не предсnавляется сложным. Если этого нету в C/C++, то может такая возможность есть в WinApi? Вот, например, есть в функция в которую передается char*. И эта память освобождается в функции. Но в функцию ведь может быть передана и константа и указатель на статическую память.
0
|
18.05.2013, 03:56 | |
Ответы с готовыми решениями:
45
Переменные в статической и динамической памяти! Выделение статической памяти, не используя статические объекты Возможно ли обращение к статической памяти функции извне? delete[] *pointer vs. delete pointer и утечка памяти |
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
|
|
21.05.2013, 00:22 | 41 |
При чем тут реализация? У меня на 2005 студии данный код падает с тем же сообщением что и у человека в 2008/10/12. WinXP.
0
|
0 / 0 / 0
Регистрация: 08.02.2013
Сообщений: 26
|
|
21.05.2013, 00:24 [ТС] | 42 |
Значит у тебя другая студия. У меня ни при релизе ни при дебаге никаких ошибок нет. А все программы ни разу не вылетали (проверял на разных ОС-х 32-х битных, и на XP).
0
|
1500 / 1146 / 165
Регистрация: 05.12.2011
Сообщений: 2,279
|
|
21.05.2013, 00:25 | 43 |
если программа не падает - это не значит что ошибки нет. она возможно не успела проявиться.
если никаких видимых последствий неправильного вызова delete нет, это не значит что при вызове ничего не происходило и не была допущена ошибка. она возможно не успела проявиться. чтобы утверждать, что ничего не происходит, берите дизасемблер, смотрите что там нагенерилось и если найдете всякого рода проверки и игнорирование вызова - тогда можно говорить о том, что данный конкретный компилятор с конкретными опциями компиляции в конкретной ситуации ничего не делает. можете заложиться на эту "фичу" - флаг вам в руки.
0
|
2381 / 1665 / 279
Регистрация: 29.05.2011
Сообщений: 3,399
|
|
21.05.2013, 00:27 | 44 |
Ну да, ну да. Разыменование нулевого указателя, выходит, тоже не ошибка. Применяй почаще.
0
|
0 / 0 / 0
Регистрация: 08.02.2013
Сообщений: 26
|
|
21.05.2013, 00:28 [ТС] | 45 |
DU, как я понял тут говорят об ошибках при компиляции и при отладке.
Ну я эту "фичу" уже в любом случае не буду ипользовать, после того как узнал, как это отрабатывают компиляторы Microsoft. Думал, может есть какая то стабильная линия поведения у этих реализаций. А никаких настроек особых я не ставил в своей студии.
0
|
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,882
|
|
21.05.2013, 00:40 | 46 |
faridenco,
Сообщений: 24 Репутация: 0 (0) =========== Нет, спасибо, я предпочту всех их Не по теме: alsav22,
0
|
21.05.2013, 00:40 | |
21.05.2013, 00:40 | |
Помогаю со студенческими работами здесь
46
Освобождение памяти delete Delete[] и утечка памяти Утечка памяти и delete Очистка памяти delete[]; Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |