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