![]() |
|
![]() ![]() ![]() |
|
Woodoo |
|
|||
Новичок Профиль Группа: Участник Сообщений: 15 Регистрация: 13.6.2006 Где: Севастополь || Ял та Репутация: нет Всего: нет |
Нет ли каких либо ограничений на одновременное (в одной программе) использование new/delete и GetMemory/ReallocMemory/FreeMemory?
Дело в том, как только я применил ф-цию ReallocMemory к памяти, выделенной с помощью GetMemory, удаление с помощью delete независимого массива, существующего и созданого с помощью new char[256] стало приводить к исключению Access Violation. Код приведу по необходимости... сложноват (как по мне) |
|||
|
||||
JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 4 Всего: 162 |
||||
|
||||
Woodoo |
|
|||
Новичок Профиль Группа: Участник Сообщений: 15 Регистрация: 13.6.2006 Где: Севастополь || Ял та Репутация: нет Всего: нет |
поподробнее можно?
есть урлы по теме? |
|||
|
||||
LastAngel |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 62 Регистрация: 18.4.2008 Репутация: нет Всего: нет |
с помощью delete можно удалять только память выделенную по new , также и malloc/free
|
|||
|
||||
Woodoo |
|
||||
Новичок Профиль Группа: Участник Сообщений: 15 Регистрация: 13.6.2006 Где: Севастополь || Ял та Репутация: нет Всего: нет |
Вы не поняли вопроса Добавлено @ 11:40 иду дальше... глюк обнаружился, но тема остаеться актуальной P.S.: Кому интересно ошибка как всегда была глупейшая, не повторяйте!!! ![]()
Это сообщение отредактировал(а) Woodoo - 21.5.2008, 11:48 |
||||
|
|||||
Rififi |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1254 Регистрация: 9.3.2008 Репутация: 1 Всего: 36 |
||||
|
||||
JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 4 Всего: 162 |
И лучше, и впраду, юзать std::string или другие классы строк. |
|||
|
||||
Woodoo |
|
|||
Новичок Профиль Группа: Участник Сообщений: 15 Регистрация: 13.6.2006 Где: Севастополь || Ял та Репутация: нет Всего: нет |
![]() Давайте оставим предпочтения в покое. Я думаю каждый сам может решить что ему юзать. Тема все еще открыта! Может кто-нибудь внятно и толково объяснить ПОЧЕМУ нельзя использовать тему вместе? Может все же можно... как убрал косяк все заработало как часы... |
|||
|
||||
Rififi |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1254 Регистрация: 9.3.2008 Репутация: 1 Всего: 36 |
если в документации сказано что память выделенную GetMemory можно освобождать через delete - тогда можно. не сказано - значит нельзя. смекаешь?
|
|||
|
||||
Graf_h |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 482 Регистрация: 18.10.2007 Где: г. Ровно, Украина Репутация: нет Всего: 5 |
Вообще лудше пользоватся new/delete!так как они не только выделяют/освобождают память, но также вызывают конструкторы/деструкторы, а также new - позволяет обработать исключение, когда по каким - то причинам нельзя выделить необходимый обьем памяти в куче!
Это сообщение отредактировал(а) Graf_h - 21.5.2008, 15:20 -------------------- Иногда переменная - это просто переменная |
|||
|
||||
LastAngel |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 62 Регистрация: 18.4.2008 Репутация: нет Всего: нет |
Их можно вместе юзать( какая разнца каким методом ты выделишь из кучи область памяти), нельзя выделять одним методом удалять другим ... Про исключения Graf_h прав Это сообщение отредактировал(а) LastAngel - 21.5.2008, 15:23 |
|||
|
||||
Woodoo |
|
|||
Новичок Профиль Группа: Участник Сообщений: 15 Регистрация: 13.6.2006 Где: Севастополь || Ял та Репутация: нет Всего: нет |
я не являюсь новичком в программировании и не хотел бы чтобы форумчане тратили свои силы на объеснение того, что: new вызывает конструктор/деконструктор, также генерирует исключение, освобжать память - только delete, для malloc - free, GetMemory - FreeMemory... последнии заместо исключения возвращают NULL при неудачи.
чтобы не возникло недорозумений. пример кода:
lack of documentation on GetMemory/ReallocMemory/FreeMemory :( |
|||
|
||||
LastAngel |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 62 Регистрация: 18.4.2008 Репутация: нет Всего: нет |
delete [] a; надо
если не совсем забыл, то delete a; удалит указатель на область выделенной памяти при этом сама выделенная память будет висеть в куче без доступа к ней, а delete [] удалит всё нафих Это сообщение отредактировал(а) LastAngel - 21.5.2008, 16:05 |
|||
|
||||
Woodoo |
|
|||
Новичок Профиль Группа: Участник Сообщений: 15 Регистрация: 13.6.2006 Где: Севастополь || Ял та Репутация: нет Всего: нет |
жжоте таварисч!
"a" у миня как бя вообще стековая переменная ![]() в любом случае ![]() |
|||
|
||||
Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 18 Всего: 154 |
я в ауте, товарисчь Woodoo, вам руским языком на С++ написали
и как это побороть происходит здесь вот что:
как побороть уже написали, строку в а нужно скопировать через strcpy malloc/free, new/delete - можно использовать в одной программе, но только для разных блоков памяти, то что создали через new должно быть удалено через delete, и аналогично для malloc/free Добавлено через 55 секунд и да, нужно удалять через delete[], так как new[]... |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++ Builder" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C++ Builder | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |