Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.08.2011, 12:29   #1
_-Re@l-_
C++, Java
Старожил
 
Аватар для _-Re@l-_
 
Регистрация: 10.04.2010
Сообщений: 2,665
Радость Преобразование в void* и delete

Имеет ли право на существование данный кусок кода? Или фтопку его?
Код:
double* x = new double;
int t = reinterpret_cast<int>(x);
delete (void*)t;
_-Re@l-_ вне форума Ответить с цитированием
Старый 19.08.2011, 12:47   #2
pproger
C++ hater
Старожил
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

даже gcc говорит
Цитата:
warning: deleting ‘void*’ is undefined
да и зачем опять же себе в ногу стрелять, не пойму. что ты хочешь этим добиться? освобождать память, отведенную под разные типы?
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance
pproger вне форума Ответить с цитированием
Старый 19.08.2011, 13:26   #3
f.hump
C/C++, Asm
Участник клуба
 
Аватар для f.hump
 
Регистрация: 02.03.2010
Сообщений: 1,323
По умолчанию

не имеет.
кстати, а почему в одном случае С++ cast а в вотором С cast? (простое любопытство)

свой манагер памяти писать надо.

Последний раз редактировалось f.hump; 19.08.2011 в 13:31.
f.hump вне форума Ответить с цитированием
Старый 19.08.2011, 19:30   #4
_-Re@l-_
C++, Java
Старожил
 
Аватар для _-Re@l-_
 
Регистрация: 10.04.2010
Сообщений: 2,665
По умолчанию

pproger
Да, так и есть, хочу освобождать память.
Цитата:
кстати, а почему в одном случае С++ cast а в вотором С cast? (простое любопытство)
А...дык это. Так захотел.
_-Re@l-_ вне форума Ответить с цитированием
Старый 20.08.2011, 01:31   #5
Blade
Software Engineer
Участник клуба
 
Аватар для Blade
 
Регистрация: 07.04.2007
Сообщений: 1,618
По умолчанию

_-Re@l-_
Второй раз вам повторяю - вы придумываете совершенно извращенные велосипеды. Все уже давно придумано, в простой и красивой форме. Читайте про умные указатели.
Мужество есть лишь у тех, кто ощутил сердцем страх, кто смотрит в пропасть, но смотрит с гордостью в глазах. (с) Ария
Blade вне форума Ответить с цитированием
Старый 20.08.2011, 08:43   #6
_-Re@l-_
C++, Java
Старожил
 
Аватар для _-Re@l-_
 
Регистрация: 10.04.2010
Сообщений: 2,665
По умолчанию

Цитата:
Второй раз вам повторяю - вы придумываете совершенно извращенные велосипеды. Все уже давно придумано, в простой и красивой форме. Читайте про умные указатели.
Просто видите ли - всегда интереснее придумать свой велосипед, нежели уже изобретённый.
_-Re@l-_ вне форума Ответить с цитированием
Старый 20.08.2011, 12:59   #7
Granus
С++
Форумчанин
 
Аватар для Granus
 
Регистрация: 22.09.2008
Сообщений: 791
По умолчанию

Цитата:
Сообщение от _-Re@l-_
Просто видите ли - всегда интереснее придумать свой велосипед, нежели уже изобретённый.
Поддерживаю!)

Когда я баловался такими штуками, каждый тип представлял как массив char'ов, так компилятор не ругается и все отлично работает) Ну, если руки откуда надо растут
Форматируйте код, будьте людьми.
Granus вне форума Ответить с цитированием
Старый 20.08.2011, 13:04   #8
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Когда я баловался такими штуками, каждый тип представлял как массив char'ов
по сути оно так и выделяется, просто как массив байтов.
а потом уже reinterpret_cast на эту память.(ну может и не точно так, но образно говоря так и есть)
и обратно.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 20.08.2011, 13:18   #9
_-Re@l-_
C++, Java
Старожил
 
Аватар для _-Re@l-_
 
Регистрация: 10.04.2010
Сообщений: 2,665
По умолчанию

Цитата:
Когда я баловался такими штуками, каждый тип представлял как массив char'ов, так компилятор не ругается и все отлично работает) Ну, если руки откуда надо растут
Например? Я, в общем-то понял суть, но всё же...
_-Re@l-_ вне форума Ответить с цитированием
Старый 20.08.2011, 14:41   #10
Granus
С++
Форумчанин
 
Аватар для Granus
 
Регистрация: 22.09.2008
Сообщений: 791
По умолчанию

Код:
// T - тип
char *var = new char [sizeof(T)];
*(T *)(var) = something; //  стиле си)
delete var;
Updated
delete [] вместо delete
Форматируйте код, будьте людьми.

Последний раз редактировалось Granus; 20.08.2011 в 18:47.
Granus вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
void to struct (C++) slim>>> Помощь студентам 1 13.01.2011 20:52
Return(void) tools Visual C++ 5 22.12.2010 12:19
error C2541: 'delete' : cannot delete objects that are not pointers novokhatsky Общие вопросы C/C++ 2 14.12.2009 10:25
Загадка void`а Voipp Общие вопросы C/C++ 4 08.09.2009 17:29
Перегрузка операций new, new[], delete, delete[] IgorKr Общие вопросы C/C++ 1 22.10.2008 12:14