Макет памяти члена данных класса показывает более широкие размеры указателей?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Макет памяти члена данных класса показывает более широкие размеры указателей?

Сообщение Anonymous »

Это мой класс (в любом случае участники данных): < /p>

class X{

public:
std::unordered_map a;
std::unordered_map b;
std::set c;
std::map d;
std::unordered_map e;
std::string f;
std::mutex g;
};
< /code>

И это макет, сгенерированный компилятором MSVC 2012: < /p>

1> class X size(264):
1> +---
1> 0 | a
1> 64 | b
1> 128 | c
1> 144 | d
1> 160 | e
1> 224 | f
1> 256 | g
1> +---
< /code>

Я не понимаю, почему элементы данных контейнера имеют такие большие пробелы между их смещениями? Адреса с точки зрения байтов- так что мой Unoromeded_map < /code> Участник данных имеет 64-байтовый указатель?! < /P>

Просто подумал- очевидно, что там есть Может быть, наполняется, но почему так много!

Подробнее здесь: https://stackoverflow.com/questions/230 ... nter-sizes
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»