Насколько большой кадр кучи в Visual C ++ - PullRequest
4 голосов
/ 15 июня 2011

В Visual C ++, если я использую new для создания объекта в куче, сколько дополнительного пространства требуется для заголовка и заполнения кадра кучи, особенно в коде выпуска?Я ожидал бы, что int скажет, сколько места было доступно в блоке, а другой, возможно, скажет, сколько из этого пространства использовалось в настоящее время, и что размеры кадра округлены до ближайших 32 или 64 бит в зависимости от архитектуры.Просто интересно, добавляет ли VC ++ что-либо еще, например, защитные байты, флаги и т. Д., И размеры кадров округляются до большего минимального размера.Иными словами, для больших объемов данных насколько неэффективно использовать большое количество небольших блоков данных в куче.

1 Ответ

6 голосов
/ 15 июня 2011

Hackety-hack:

int* p = new int;
int* q = new int;
std::cout << (char*)q - (char*)p << std::endl;

Да, я знаю, технически неопределенное поведение, но я думаю, что это должно ответить на вопрос :)

...