void * ptr0 = (void*)"Buffer_1";
int size0 = sizeof(ptr0);
// WILL THIS RETURN THE NUMBER OF BYTES OCCUPIED BY THE MEMORY POINTED BY ptr0?
Мое требование
1) хранить некоторые данные в буфере & создать void * указатель на него, который я делаю в 1-й строке.
2) Позже я хочу получить размер этого буфера в байтах. 2-я строка сделает эту работу.
sizeof
возвращает размер, требуемый типом. Поскольку тип вы передаете sizeof
в этом случае указатель, он будет возвращать размер указателя.
Если вам нужен размер данных, на которые указывает указатель, вам придется запомнить их, сохранив их явно.
Нет, это просто вернет размер вашего указателя в байтах. С помощью sizeof
чтобы получить размер массива будет работать только на массивах, объявленных как это
char szArray[10];
не на массивах, созданных динамически
char* pArray = new char[10];
sizeof(szArray); // number of elements * sizeof(char) = 10
sizeof(pArray); // sizeof the pointer
sizeof () работает во время компиляции. так sizeof(ptr0)
вернет 4 или 8 байтов, как правило. вместо этого используйте strlen
? или на самом деле хранить нет. байтов, хранящихся (void *)
в отдельной переменной.