1 / 1 / 1
Регистрация: 22.03.2010
Сообщений: 71
|
||||||
1 | ||||||
Таинственный тип void19.06.2011, 11:17. Показов 1903. Ответов 12
Метки нет (Все метки)
правильно ли я освободил память?
0
|
19.06.2011, 11:17 | |
Ответы с готовыми решениями:
12
Программа (не нахотиn тип void) Перевести тип в void* и обратно Определить тип под void* Для чего нужен тип void? |
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,679
|
|
19.06.2011, 11:46 | 2 |
получается, что неправильно, если компилятор g++ ругается.
0
|
187 / 174 / 18
Регистрация: 22.03.2010
Сообщений: 612
|
|
19.06.2011, 12:09 | 3 |
у меня не ругается. Только я не понял всё-таки как он удаляет на что указывает void*
0
|
2022 / 1621 / 489
Регистрация: 31.05.2009
Сообщений: 3,005
|
|
19.06.2011, 12:21 | 4 |
1
|
Android Programmer
141 / 142 / 10
Регистрация: 08.12.2010
Сообщений: 421
|
|
19.06.2011, 12:31 | 5 |
0
|
2381 / 1665 / 279
Регистрация: 29.05.2011
Сообщений: 3,399
|
|
19.06.2011, 12:31 | 6 |
pito211, а ты используй вместо встроенных типов объекты. И в деструкторе напиши "Ой, меня удалили!". Подозреваю, что такой надписи ты не увидишь ни разу. А вот освободил ли компилятор блок памяти или нет — одному компилятору и известно, но так нельзя в любом случае.
0
|
19.06.2011, 12:31 | 7 | |||||
Ничего здесь нет правильного тип void* это не типизированная куча байтов, в твоём примере ты выделил только три байта и причём тут массив ты записываешь в некуда, вот и при удаление может возникнуть ошибка, для этого нужно делать так, метод delete он основываеться на принятие типа void* - адреса памяти для удаления, вот правильный способ применение твоей задачи:
0
|
187 / 174 / 18
Регистрация: 22.03.2010
Сообщений: 612
|
||||||
19.06.2011, 12:49 | 8 | |||||
0
|
2381 / 1665 / 279
Регистрация: 29.05.2011
Сообщений: 3,399
|
|
19.06.2011, 12:58 | 9 |
xAtom, это в твоём коде ничего правильного нет А в исходном только удаление по нетипизированному указателю
0
|
1 / 1 / 1
Регистрация: 22.03.2010
Сообщений: 71
|
||||||
19.06.2011, 12:59 [ТС] | 10 | |||||
спасибо за правильный пинок! действительно память не освобождается в моем случае.
Но вот нашел неожиданный выход!
crated object A crated object B crated object C deleted object A deleted object B deleted object C помоему круто! зы компилятор от microsoft
0
|
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,679
|
|||||||||||
19.06.2011, 13:19 | 11 | ||||||||||
xAtom,о чём речь? У ТС выделяется не три байта, выделяется массив из указателей на void, каждый имеет 4 байта размер (итого 12) и каждый инициализируется настолько грамотно, насколько позволяет работа с void*
Только у вас ещё до кучи конструируется указатель на массив из указателей на void. А у ТС этого нет, но у него всё равно указатель на массив указателей на void конструируется, пусть и неявно. Кстати, вот он:
Добавлено через 15 минут pontakrin, это чисто для познавания круто. на практике же вот:
++++++++++++++++++++++++++++++++++++++++++++++++++= Если же хочется использовать именно массив, то тут это уже моё сугубо лично мнение идёт, массив должен быть из каких-то однородных, что ли элементов. То есть оъекты A, B и С пусть будут объектами ОДНОГО класса. Но пусть в этом классе будет констуктор и соответственно A, B и С будут объектами одного класса, но сконструированными ПО-РАЗНОМУ. Так по-моему грамотно В противном случае работаем с массивом указателей на объекты, которые ничё общего меж собой не имеют. Компилятор компилит, ну да. В общем, я бы над этим задумался дабы сразу приучиться к грамотному кодингу.
0
|
1 / 1 / 1
Регистрация: 22.03.2010
Сообщений: 71
|
|
19.06.2011, 13:30 [ТС] | 12 |
а как же тогда в других языках существуют типы вроде variant и сollection. я вот считаю что накладывать стандарт на образ своего мышления не стоит потому что вам придется работать с чужими кодами, а у другого человека совсем другой тип мышления!
0
|
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,679
|
|
19.06.2011, 13:35 | 13 |
Я о С/C++, а не о других языках.
И мне не нравится создавать массив указателей на void и в чужих кодах я нормально ковырялся в силу своих умений- такое вижу впервые. А так-то у нас демократия. Чё хошь, то и делай. Компилятор хавает и ладно.
0
|
19.06.2011, 13:35 | |
19.06.2011, 13:35 | |
Помогаю со студенческими работами здесь
13
Void как подстановочный тип шаблона Что означает тип Class A __cdecl(void) ? Как узнать тип, переданный через указатель на void? Void menu(void); что это ? почему не void menu(); Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |