繁体   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