|
247 / 1 / 1
Регистрация: 02.01.2013
Сообщений: 31
|
||||||
Как создать объект в новой куче?19.01.2013, 13:13. Показов 3031. Ответов 29
Метки нет (Все метки)
VisualStudio 2012, Win7x64Prof.
Пробую выделить память в куче, а потом с помощью формы "Placement new" разместить в ней объект.
Как осилить гидру?
0
|
||||||
| 19.01.2013, 13:13 | |
|
Ответы с готовыми решениями:
29
Создать объект стек и создать объект очередь с перегруженными операциями
|
|
1500 / 1146 / 165
Регистрация: 05.12.2011
Сообщений: 2,279
|
||||||
| 19.01.2013, 13:21 | ||||||
|
может #include <new> отсутствует, может еще что. полностью ошибки сюда вставте.
вот в 2005 студии компилится:
2
|
||||||
|
247 / 1 / 1
Регистрация: 02.01.2013
Сообщений: 31
|
|
| 19.01.2013, 13:31 [ТС] | |
|
#include <new> -присутствует,
а ошибка малоинформативна: "error C2061: синтаксическая ошибка: идентификатор "placementMemory"".
0
|
|
|
1500 / 1146 / 165
Регистрация: 05.12.2011
Сообщений: 2,279
|
|
| 19.01.2013, 13:34 | |
|
вот один в один скопипастил код и все компилится. у вас там точно такой же код, или это упрощенная для форума версия?
1
|
|
|
247 / 1 / 1
Регистрация: 02.01.2013
Сообщений: 31
|
||
| 19.01.2013, 14:18 [ТС] | ||
|
Добавлено через 3 минуты Попробовал ваш вариант- ошибки абсолютно те же: 2 штуки на строке "MyClass* ptr = new (buffer) MyClass();" и еще две на строке "MyClass* ptr2 = new (specifiedBuffer) MyClass(); // тоже ок"
0
|
||
|
1500 / 1146 / 165
Регистрация: 05.12.2011
Сообщений: 2,279
|
|
| 19.01.2013, 14:20 | |
|
ну хз тогда. вот тут все тоже ок: http://liveworkspace.org/code/26ddfP$1
еще раз: выложите сюда полностью список ошибко. строчки, тексты, коды ошибок. возможно в сети что-нибудь есть на эту тему и по кодам можно найти. так гадать сложно.
1
|
|
|
3646 / 1378 / 243
Регистрация: 16.04.2009
Сообщений: 4,526
|
|
| 19.01.2013, 14:52 | |
|
0
|
|
|
~ Эврика! ~
1258 / 1007 / 74
Регистрация: 24.07.2012
Сообщений: 2,002
|
|
| 19.01.2013, 14:57 | |
|
HeapCreate(), не?
0
|
|
|
247 / 1 / 1
Регистрация: 02.01.2013
Сообщений: 31
|
||||||
| 19.01.2013, 15:08 [ТС] | ||||||
|
Ошибка оказалась весьма забавной: в модуле диалога формы MFC-проекта есть такие строки:
Если использовать Release- конфигурацию, то все отлично запускается и работает. http://stackoverflow.com/quest... es-it-mean Добавлено через 8 минут Может есть какой-то другой способ размещения объектов в произвольной куче (без использования placement new)?
0
|
||||||
|
3646 / 1378 / 243
Регистрация: 16.04.2009
Сообщений: 4,526
|
|
| 19.01.2013, 15:23 | |
|
1
|
|
|
247 / 1 / 1
Регистрация: 02.01.2013
Сообщений: 31
|
|||||||||||
| 19.01.2013, 15:32 [ТС] | |||||||||||
Сообщение было отмечено как решение
Решение
Насколько я понял этот самый DEBUG_NEW нужен только для того, чтобы легче найти место утечки памяти (сама утечка и без этого нагромождения будет видна). Другими словами это дополнительный сервис, который позволит легче отлаживать при наличии утечек (а при отсутствии таковых- лишняя надстройка).
Так что решил закоментировать строки:
Может кто-то раскритиковать мои смелые утверждения?
1
|
|||||||||||
|
1500 / 1146 / 165
Регистрация: 05.12.2011
Сообщений: 2,279
|
|
| 19.01.2013, 15:42 | |
|
утечки - это не только не освобождение памяти. это еще и неотработанные деструкторы.
и если память системе все-таки вернуть можно, то вот нужные деструкторы таким макаром не вызовутся. так что тут нужно быть осторожным.
1
|
|
|
3646 / 1378 / 243
Регистрация: 16.04.2009
Сообщений: 4,526
|
|
| 19.01.2013, 15:46 | |
|
0
|
|
|
1500 / 1146 / 165
Регистрация: 05.12.2011
Сообщений: 2,279
|
||||||
| 19.01.2013, 15:56 | ||||||
|
в том смысле, если объекты создавать в заранее подготовленном пуле и потом его убивать - то это как бы нет утечки памяти. да, это так. но в этой памяти создавались объекты и важно, чтобы их деструкторы вызывались.
так вот, просто возвращение памяти системе не вызовет эти деструкторы. а значит что-то может утечь, попимо памяти. например синзронизирующие объекты остались в занятом состоянии (освобождаются в теле деструтора), дескрипторы файлов или еще чего-то тоже не освобождены (освобождаются в теле деструктора) и т.д. Ну и я не понял, как на это повлияет этот макрос. Автор ведь его закомментировал и создает объекты в заранее выделенном буфере памяти. вот такой классик тоже приведет к утечке, если деструктор не позовется:
1
|
||||||
|
247 / 1 / 1
Регистрация: 02.01.2013
Сообщений: 31
|
||
| 19.01.2013, 16:19 [ТС] | ||
|
Такое бывает?
0
|
||
|
~ Эврика! ~
1258 / 1007 / 74
Регистрация: 24.07.2012
Сообщений: 2,002
|
||
| 19.01.2013, 16:25 | ||
|
1
|
||
|
1500 / 1146 / 165
Регистрация: 05.12.2011
Сообщений: 2,279
|
||||||
| 19.01.2013, 16:30 | ||||||
|
я бы не сказал что все так просто. указал и забыл. пример:
0
|
||||||
|
247 / 1 / 1
Регистрация: 02.01.2013
Сообщений: 31
|
||
| 19.01.2013, 16:36 [ТС] | ||
|
Как создать "обертки памяти" в виде отдельных куч для потоков?
0
|
||
| 19.01.2013, 16:41 | |||||||
1
|
|||||||
| 19.01.2013, 16:41 | |
|
Помогаю со студенческими работами здесь
20
Как создать объект класса в динамической памяти?
Как создать объект класса? ПРоблемма из-за раздельной компиляции Как создать объект с конструктором в интерфейсе другого класса?
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20%
|
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
|
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
|
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора
Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2.
Задача: уведомлять пользователя, если. . .
|
|
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
|
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2.
Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
|
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
|
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
|