Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ReallocMemory и New, конфликт? 
:(
    Опции темы
Alexeis
Дата 21.5.2008, 16:53 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 26
Всего: 459



Использовать new/delete, new[]/delete[], GetMemory/ReallocMemory/FreeMemory в одной программе можно, хотя бы потому что можно объединять С и С++ модули в одном проекте.


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Woodoo
Дата 21.5.2008, 17:14 (ссылка)   | (голосов:4) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 13.6.2006
Где: Севастополь || Ял та

Репутация: нет
Всего: нет



2Товарисч Lazin:
Читайте внимательней посты
Во втором же своем посту я косяк нашел, и просто напросто о нем сообщил.

Далее:
Код

char * a = new char[100];
delete a;


корректный код, который удалиь созданый ранее массив, так как "a" - указатель на него

далее, читайте мой пост о просьбе не тратить попусту силы на объяснение элементраных вещей.

2Alexeis:
Конструктивно. Respect.
Тема закрыта.
PM MAIL   Вверх
LastAngel
Дата 21.5.2008, 20:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 62
Регистрация: 18.4.2008

Репутация: нет
Всего: нет



Цитата(Woodoo @ 21.5.2008,  17:14)
Далее:
Код

char * a = new char[100];
delete a;


корректный код, который удалиь созданый ранее массив, так как "a" - указатель на него

с код гуардом прогони этот "правильный код" smile
PM MAIL   Вверх
Woodoo
Дата 22.5.2008, 10:57 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 13.6.2006
Где: Севастополь || Ял та

Репутация: нет
Всего: нет



2LastAngel:
Сразу прошу прощения за критику но: название темы читал? перед твоим пост читал? создаешь много офтопа. Тема  ЗАКРЫТА.
P.S.: развили демогогию... все тема должна была состоять из 2ух постов:

Woodoo: можно параллельно юзать new, GetMemory и malloc?
Alexeis: да

... это еще не начали доказывать, что new лучше чем malloc, и char * по сравнению с AnsiString отстой  smile , а ReallocMemory вообще пользоваться противопоказано

PM MAIL   Вверх
Lazin
Дата 22.5.2008, 11:29 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 18
Всего: 154



Цитата(Woodoo @ 21.5.2008,  17:14)
Далее:
Код

char * a = new char[100];
delete a;


корректный код, который удалиь созданый ранее массив, так как "a" - указатель на него

это некорректный код smile

Добавлено через 2 минуты и 6 секунд
некорректный он по 2-м причинам, одну назвали, вторая - этот код не безопасен и может привести к утечке памяти smile 
PM MAIL Skype GTalk   Вверх
JackYF
Дата 22.5.2008, 12:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 4
Всего: 162



Цитата(Woodoo @  21.5.2008,  16:14 Найти цитируемый пост)
который удалиь созданый ранее массив

По третьему разу: удаление с помощью "delete" памяти, выделенной с помощью "new[]" - ошибка. Что не ясно?


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
Rififi
Дата 22.5.2008, 12:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1254
Регистрация: 9.3.2008

Репутация: 1
Всего: 36



Цитата(Woodoo @  22.5.2008,  10:57 Найти цитируемый пост)
Woodoo: можно параллельно юзать new, GetMemory и malloc?
Alexeis: да


правильный вопрос звучит так:
можно ли совместно и независимо друг от друга юзать связки new/delete, new[]/delete[], GetMemory/FreeMemory и malloc/free?
PM MAIL   Вверх
Woodoo
Дата 22.5.2008, 13:09 (ссылка)    | (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 13.6.2006
Где: Севастополь || Ял та

Репутация: нет
Всего: нет



Представте себе!!! Код преведенный мной РАБОТАЕТ КОРРЕКТНО. Скомпилируйте следующий код и откройте деспетчер задач
Код
int * p = new int[100000000];
ShowMessage("А теперь смотрим как освобождается память");
delete p;






Граждане, уважаемые! Будте благоразумны и адекватны!

Создайте новый топик и обсуждайте где там в память куда утекает! Автора темы данный вопрос не интересует! Интересующая информация давным давно получена!

Не стои более писать "По третьему разу:", "По четвертому разу:"


Т Е М А     З А К Р Ы Т А


PM MAIL   Вверх
Alexeis
Дата 22.5.2008, 13:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 26
Всего: 459



Woodoo, тем не менее правильно будет так
Код

int * p = new int[100000000];
ShowMessage("А теперь смотрим как освобождается память");
delete[] p;


Подобная ошибка иногда приводит к краху программы. Все зависит от компилятора, если компилятор шибко умный, то он может и сам сообразить, что вместо delete p; нужно подставить delete[] p; , но на самом деле удаление массива delete p; является недопустимым и приводит к непредсказуемым последствиям.


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Rififi
Дата 22.5.2008, 13:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1254
Регистрация: 9.3.2008

Репутация: 1
Всего: 36



Цитата(Woodoo @  22.5.2008,  13:09 Найти цитируемый пост)
Код преведенный мной РАБОТАЕТ КОРРЕКТНО.

Это пример так называемого неопределённого поведения.
Учи матчасть. раздел 18.4.1
PM MAIL   Вверх
Woodoo
Дата 22.5.2008, 13:35 (ссылка)    | (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 13.6.2006
Где: Севастополь || Ял та

Репутация: нет
Всего: нет



админ, не дайте плиз еще сотни пользователям высказаться что правильно писать delete[], представте себе я это знаю!
ыыы... можно какнить удалить тему?
PM MAIL   Вверх
JackYF
Дата 22.5.2008, 15:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 4
Всего: 162



Цитата(Woodoo @  22.5.2008,  12:35 Найти цитируемый пост)
правильно писать delete[], представте себе я это знаю!

Ну хорошо, что знаешь. Правда, до этого в трёх своих постах ты почему-то говорил другое.

Цитата(Woodoo @  22.5.2008,  12:35 Найти цитируемый пост)
можно какнить удалить тему? 

Я считаю, что тема очень показательна. Так что пускай висит.

З.Ы. У нас здесь не балаган, поэтому будь добр выражаться технически грамотно, и, по возможности, с наименьшим количеством орфографических ошибок.



--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
Woodoo
Дата 22.5.2008, 15:38 (ссылка)    | (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 13.6.2006
Где: Севастополь || Ял та

Репутация: нет
Всего: нет



Я писал, что код работает корректно... то что это правильная запись я не писал.

"З.Ы. У нас здесь не балаган..." - ага, у нас тут сплошной оффтоп!

Советовал бы внимательней читать оставленные сообщения, перед тем как оставлять мнение
PM MAIL   Вверх
JackYF
Дата 22.5.2008, 18:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 4
Всего: 162



Цитата(Woodoo @  22.5.2008,  14:38 Найти цитируемый пост)
что код работает корректно

Корректно - значит по спецификации. А у тебя код работает ожидаемо по стечению обстоятельств (особенности реализации низкоуровневых функций new/new[]/delete/delete[], на которые полагаться нельзя). Кроме того, в случае не-POD типов данный код ведёт к утечкам памяти.


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
Woodoo
Дата 22.5.2008, 21:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 13.6.2006
Где: Севастополь || Ял та

Репутация: нет
Всего: нет



JackYF, сколько можно!? Не будьте столь навязчевы! Нельзя же зарабатывать Ваше колличество сообщений таким образом! Будте конструктивны! Т.е. по делу... т.е. по теме... а тема... сами видите.
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0955 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.