我有一个涉及内存分配的问题。假设我创建了一个这样的指针数组。
int **numbers = new int *[1024*1024];
我曾假设这需要 8MB 内存(Mac 64 位上的 8 字节指针),但事实并非如此。仅在为每个指针分配一个值时才分配内存。因此,如果我将所有指针设为 NULL,那么我会看到分配了 8MB。
for(int i=0; i<1024*1024; i++)
{
numbers[i] = NULL;
}
我的应用程序如何知道哪些指针已分配值而不为其分配内存?