C/C++

Как узнать размер переменной занимаемой в памяти в байтах C++?

Dgeff Shitikov
Dgeff Shitikov
117
sizeof

Хотя "занимаемая память" - понятие относительное. А объекты типа векторов, хранящие указатели на память в куче? А структуры с выравниванием, в которых между данными есть пробелы, по факту не содержащие данных?
Илья Smile
Илья Smile
36 956
Лучший ответ
Dgeff Shitikov это куда вводить? В код?
#include <iostream>
using namespace std;
struct Box {
double a;
long b;
short c;
char n;
Box() : a(0), b(0), c(0), n(0) {}
};

template<typename Type>
size_t sizevar(Type value) {
return sizeof(value);
}
int main() {
char x_char = 's';
short x_short = 28;
int x_int = -17;
long x_long = 23;
float x_float = 98.7F;
long long x_llong = -8;
double x_double = 45.12;
Box x_Box;
cout
<< "Size char: " << sizevar(x_char) << '\n'
<< "Size short: " << sizevar(x_short) << '\n'
<< "Size int: " << sizevar(x_int) << '\n'
<< "Size long: " << sizevar(x_long) << '\n'
<< "Size float: " << sizevar(x_float) << '\n'
<< "Size long long: " << sizevar(x_llong) << '\n'
<< "Size double: " << sizevar(x_double) << '\n'
<< "Size Box: " << sizevar(x_Box) << '\n';
cin.get();
return 0;
}
Андрей Ибаев
Андрей Ибаев
75 712
Юля, ты недалеко уйдешь, если не будешь читать пособия и справочники по C++. Кстати, только описание C++ в его стандарте, без приемов применения, занимает свыше тысячи страниц ;) Понятно, что тебе нужны самые начальные знания, но это всё равно десятки страниц, тут их писать никто не будет. Интересно, на какую специальность вы учитесь, если вам дают C++ -один из самых сложных языков программирования?
И, кстати, в дальнейшем указывай, С нужен или C++ -это разные языки, хотя большинство, но не все, средств С входит в C++, да и то, что есть от C, в C++ часто продублировано более удобными средствами.
Пример:
printf("%d",sizeof(int));
Андрей ************ предрекаю варнинг :D
нужно %ld