Запитання з тегом «sizeof»

sizeof відноситься до стандартного оператора C / C ++ для повернення розміру в байтах виразу або типу даних.


5
Чому лямбда має розмір 1 байт?
Я працюю з пам’яттю деяких лямбд у C ++, але трохи здивований їх розміром. Ось мій тестовий код: #include <iostream> #include <string> int main() { auto f = [](){ return 17; }; std::cout << f() << std::endl; std::cout << &f << std::endl; std::cout << sizeof(f) << std::endl; } Ви можете …
89 c++  c++11  lambda  c++14  sizeof 



4
Як ця структура може мати sizeof == 0?
Існує стара публікація з проханням про конструкцію, для якої sizeofслід повернутися 0. Є декілька високих балів відповідей від користувачів з високою репутацією, які заявляють, що за стандартом жоден тип або змінна не може мати розмір 0. І я на 100% з цим погоджуюсь. Однак є нова відповідь, яка представляє таке …

10
Який розмір порожнечі?
Що дасть це твердження? void *p = malloc(sizeof(void)); Редагувати: розширення запитання. Якщо sizeof (void) дає 1 у компіляторі GCC, то виділяється 1 байт пам'яті, і вказівник p вказує на цей байт, а p ++ буде збільшено до 0x2346? Нехай p дорівнює 0x2345. Я говорю про p, а не * p.

5
Послідовна операція призводить до несподіваних змінних розмірів
Контекст Ми переносимо код C, який спочатку був складений за допомогою 8-бітного компілятора С для мікроконтролера PIC. Загальна ідіома, яка використовувалася для того, щоб запобігти непідписаним глобальним змінним (наприклад, лічильникам помилок) перекидання назад на нуль, є наступним: if(~counter) counter++; Бітовий оператор тут інвертує всі біти, і твердження вірно, лише якщо …

3
Чому розмір типу даних відрізняється, коли значення безпосередньо передається оператору sizeof?
#include <stdio.h> int main() { char a = 'A'; int b = 90000; float c = 6.5; printf("%d ",sizeof(6.5)); printf("%d ",sizeof(90000)); printf("%d ",sizeof('A')); printf("%d ",sizeof(c)); printf("%d ",sizeof(b)); printf("%d",sizeof(a)); return 0; } Вихід: 8 4 4 4 4 1 Чому вихід відрізняється для одних і тих же значень?
15 c  int  sizeof 

1
Як отримати кількість елементів у std :: array <T, N>, не створюючи його екземпляр?
Є std::array&lt;T, N&gt;::size(), але це нестатично, тому він вимагає екземпляра std::array. Чи є спосіб , щоб отримати значення , яке вона повертає (який є Nв std::array&lt;T, N&gt;) без того , щоб побудувати екземпляр масиву? Для нормального масиву я міг би використати sizeof, але я не бачу гарантії, яка sizeof(std::array&lt;T, N&gt;) …
9 c++  arrays  c++11  sizeof 
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.