1 / 1 / 0
Регистрация: 22.03.2020
Сообщений: 131
|
||||||
1 | ||||||
Сколько памяти (в байтах) займет данный массив: class Test { public: int c=0,r=0; double q = 0; }; Test *Mass = new Test15.04.2020, 20:00. Показов 941. Ответов 10
Метки нет Все метки)
(
Сколько памяти (в байтах) займет данный массив:
0
|
|
15.04.2020, 20:00 | |
Ответы с готовыми решениями:
10
Nginx перенаправляет на http://site.ru/test.ru или http://test.ru/test.ru Nunit Test для privat int[] и public void C:\Projects\test\test.cpp|6|error: ISO C++ forbids declaration of 'operator++' with no type [-fpermissive]| Функция file_exists(test/01.ogg) работает, если папка test находится в корневом каталоге моего сервера. |
Параллельный Кот
1905 / 827 / 350
Регистрация: 25.03.2016
Сообщений: 2,045
|
|
15.04.2020, 20:02 | 2 |
5 * sizeof(Test) + выравнивание (если оно будет)
0
|
7538 / 6399 / 2918
Регистрация: 14.04.2014
Сообщений: 27,865
|
|
15.04.2020, 20:05 | 3 |
Что за выравнивание?
0
|
Вездепух
![]() ![]() 11087 / 6054 / 1652
Регистрация: 18.10.2014
Сообщений: 15,197
|
|
15.04.2020, 20:07 | 4 |
Вопрос нечетко поставлен.
Во-первых, каковы размеры int и double на вашей платформе?Во-вторых, размер массива Test[5] и количество памяти фактически выделенное new Test[5] - это разные вещи. О чем именно идет речь в вопросе?
0
|
Параллельный Кот
1905 / 827 / 350
Регистрация: 25.03.2016
Сообщений: 2,045
|
||||||
15.04.2020, 20:12 | 5 | |||||
Возможно неверно назвал это явление, new может выделить блок памяти большего размера, чем требуется для хранения массива, и выравнивать его определенным образом по адресам памяти.
Код
size: 80 0x55d0b93671e0 0x55d0b9367240 0x55d0b93672a0
0
|
1 / 1 / 0
Регистрация: 22.03.2020
Сообщений: 131
|
|
15.04.2020, 20:13 [ТС] | 6 |
я скоприровал вопрос полностью и контрольных вопросов
0
|
Вездепух
![]() ![]() 11087 / 6054 / 1652
Регистрация: 18.10.2014
Сообщений: 15,197
|
|
15.04.2020, 20:15 | 7 |
Это не меняет того факта, что вопрос нечетко поставлен.
Скорее всего ваши "контрольные вопросы" глобально подразумевают какую-то конкретную платформу. Но вы ее нам не называете.
0
|
7538 / 6399 / 2918
Регистрация: 14.04.2014
Сообщений: 27,865
|
|
15.04.2020, 20:19 | 8 |
valen10, странный у тебя способ определять по адресам. Они вообще могут в разных местах находиться.
0
|
Параллельный Кот
1905 / 827 / 350
Регистрация: 25.03.2016
Сообщений: 2,045
|
|
15.04.2020, 20:36 | 9 |
Да, согласен. Но тут больше похоже на то, что они расположены друг за другом.
Не уверен, что есть надежный способ узнать реально выделенный объем памяти. Видел на форуме подобную тему, где говорилось, что перед выделенным блоком может сохраняться такой размер (служебная информация для delete[]). Проверил сейчас интереса ради, но там оказалось число на 1 больше чем разница адресов. Иных вариантов не знаю, кроме как просто сказать 5 * sizeof(Test) + k , где k >= 0 ![]()
0
|
7538 / 6399 / 2918
Регистрация: 14.04.2014
Сообщений: 27,865
|
|
15.04.2020, 20:38 | 10 |
Мне кажется, на уровне языка дальше 5 * sizeof(Test) рассуждать нет смысла.
1
|
Вездепух
![]() ![]() 11087 / 6054 / 1652
Регистрация: 18.10.2014
Сообщений: 15,197
|
|
15.04.2020, 20:50 | 11 |
Размер массива (то есть 5) сохраняется если
1. Класс имеет нетривиальный деструктор или 2. Класс имеет перегруженный operator delete[](void *, size_t) В данном случае ни того, ни другого нет, т.е. размер сохраняться не будет. Размер всего блока в байтах, разумеется, сохраняется всегда, перед началом блока. (Хотя в релизной версии VS, например, как-то все хитрее).
1
|
15.04.2020, 20:50 | |
Помогаю со студенческими работами здесь
11
Что такое unit test и regression test
Указатель на массив строк - В функции Test печатается непонятно что из памяти
У себя на локале я пишу ссылку test.php?city=1 и в test.php он видет $city==1 Не получается сконфигурировать Test::DBIx::Class Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |