0
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* ポインタを作成することです。
2) 後で、このバッファーのサイズを BYTES で取得したいと考えています。2行目はこの仕事をします。

4

3 に答える 3

7

sizeofタイプに必要なサイズを返します。この場合に渡す型sizeofはポインタなので、ポインタのサイズを返します。

ポインタが指すデータのサイズが必要な場合は、明示的に保存して覚えておく必要があります。

于 2012-11-05T07:36:43.730 に答える
2

いいえ、これは単にポインタのサイズをバイト単位で返します。配列のサイズを取得するために使用sizeofすると、このように宣言された配列でのみ機能します

char szArray[10];

動的に作成されたアレイではありません

char* pArray = new char[10];

sizeof(szArray);  // number of elements * sizeof(char) = 10
sizeof(pArray);   // sizeof the pointer
于 2012-11-05T07:39:05.673 に答える
1

sizeof()はコンパイル時に機能します。したがってsizeof(ptr0)、通常は4バイトまたは8バイトを返します。代わりにstrlen?または実際に番号を保存します。(void *)別の変数に保持されているバイト数。

于 2012-11-05T07:37:58.713 に答える