Доброе время суток!
Столкнулся с небольшой проблемой при использовании операторой new() и delete() в C++.
Для начала, пример кода на C:
struct struct_t {
....
char data[];
};
struct struct_t *function()
{
struct struct_t *s;
....
/* Вычислили размер data. */
s = malloc(sizeof(struct struct_t) + datasize);
return s;
}
....
/* Освобождаем память. */
free(s);
Внимание вопрос: как то же самое написать на C++? У меня возникла сложность с тем, что единственный известный мне подходящий способ выделения памяти выглядит так:
s = (struct_t) new char [sizeof(struct_t) + datasize);
Т.е. я выделяю память под массив байт. Но в этом случае ее и освобождать нужно как
delete [] s
а хотелось бы просто delete s....
Может кто чего подскажет? :)
Ответ на:
комментарий
от syomin
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум выделение памяти и структуры (2008)
- Форум C++: перегруженные new/delete не работают в shared libraries?! (2005)
- Форум [C++] Перегрузка new и delete в производном классе (2011)
- Форум использование new(void*, size_t) (2008)
- Форум Правильно ли я организовал выделение памяти? (2014)
- Форум C++, странная проблема с «new». Не даёт выделять мелкие куски. (2011)
- Форум malloc.c: Assertion ... __builtin_offsetof (struct malloc_chunk ... (2011)
- Форум double free or corruption (out) (2018)
- Форум Использование placement new (2014)
- Форум Ошибки в работе функции, в которой вызывается malloc() (2014)