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)稍后我想以字节为单位获取此缓冲区的大小。第二行将完成这项工作。
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)稍后我想以字节为单位获取此缓冲区的大小。第二行将完成这项工作。
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 *)
由 保存在单独变量中的字节数。