Инициализация класса, члены которого динамически распределяются. Может ли новое ключевое слово выделять весь блок памяти с учетом членов, которые также будут инициализированы внутри класса конструктором по умолчанию?
Должен ли я заботиться о том, где эти члены размещаются в памяти (разбросаны или собраны вместе))? Я работаю с огромными массивами вершин в рекурсивном алгоритме, который выполняет адаптивное уточнение сетки на основе некоторых критериев ошибок. И мне нужно обойти эти массивы для выполнения других операций, поэтому мне нужна производительность.
Кроме того, как связанная тема. Является ли один из двух способов, используемых ниже, чтобы объявить класс внутри основной функции предпочтительным с точки зрения производительности?
Не могли бы вы порекомендовать мне какую-нибудь книгу / статью / веб-страницу на эту тему?
Примеригрушечный код, который суммирует проблему:
class Octree {
vec3* Vertex;
vec3* Cell_Centers;
public:
Octree(unsigned population_to_allocate) //constructor
{
Vertex = new vec3[population_to_allocate*8];
Cell_Centers = new vec3[population_to_allocate];
}
int main()
{
unsigned population_to_allocate = 3000;
Octree* newOctree = new Octree(population_to_allocate);
Octree stackOctree(population_to_allocate);
}