Создание объектов динамического размера

Удален тег C, видя, что это вызывало некоторую путаницу (с самого начала этого не должно было быть; извините за неудобства. Ответ C все еще приветствуется: но будет мешать объектам, у которых уже есть перегрузки new (это может даже повлиять на размещение new ...).

Наконец, я придумал злоупотребление размещением new:

inline TextCache* CreateTextCache(size_t nLength)
{
    char* pNew = new char[sizeof(TextCache) + nLength];
    return new(pNew) TextCache;
}

Это, вероятно, худшая идея на данный момент, для довольно несколько причин.

Так есть ли лучшие способы сделать это? Или одна из вышеперечисленных версий будет лучше или, по крайней мере, улучшена? Считается ли выполнение даже безопасной и / или плохой практикой программирования?


Как я сказал выше, я пытаюсь избежать двойного выделения, потому что для этого не нужно 2 выделения, и это заставляет записывать (сериализовать) эти вещи в файлы намного проще.

Так есть ли лучшие способы сделать это? Или одна из вышеперечисленных версий будет лучше или, по крайней мере, улучшена? Считается ли выполнение даже безопасной и / или плохой практикой программирования?


Как я сказал выше, я пытаюсь избежать двойного выделения, потому что для этого не нужно 2 выделения, и это заставляет записывать (сериализовать) эти вещи в файлы намного проще.

Так есть ли лучшие способы сделать это? Или одна из вышеперечисленных версий будет лучше или, по крайней мере, улучшена? Считается ли выполнение даже безопасной и / или плохой практикой программирования?


Как я сказал выше, я пытаюсь избежать двойного выделения, потому что для этого не нужно 2 выделения, и это заставляет записывать (сериализовать) эти вещи в файлы намного проще. Единственное исключение из требования о двойном распределении, которое у меня есть, - это когда накладные расходы практически нулевые. единственная причина, по которой я столкнулся, это когда я последовательно выделяю память из фиксированного буфера ( с использованием этой системы , которую я придумал), однако это также специальное исключение для предотвращения избыточного копирования.

10
задан Jonathan Leffler 7 September 2010 в 17:03
поделиться