[英]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.