簡體   English   中英

在指向C ++中的緩沖區(字符串“”)的空指針上使用sizeof()以便在BYTES中獲得大小嗎?

[英]Using sizeof() on a void pointer pointing to a buffer (string “ ”) in C++ in order to get the size in BYTES?

void * ptr0 = (void*)"Buffer_1";
int size0 = sizeof(ptr0);
// WILL THIS RETURN THE NUMBER OF BYTES OCCUPIED BY THE MEMORY POINTED BY ptr0?

我的要求是
1)在緩沖區中存儲一些數據並在第1行中創建指向它的void *指針。
2)稍后我想在BYTES中獲取此緩沖區的大小。 第二行將完成此工作。

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 *)在單獨的變量中保留的字節數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM