我有一个与内存分配相关的问题。假设我创建了一个指针数组,就像这样。
int **numbers = new int *[1024*1024];
我原以为这需要8MB的内存(在Mac 64位上是8字节指针),但事实并非如此。只有当每个指针被赋值时才会分配内存。因此,如果我将所有的指针都设置为NULL,则会分配8MB的内存。
for(int i=0; i<1024*1024; i++)
{
numbers[i] = NULL;
}
我的应用程序如何知道哪些指针分配了值,而不需要为其分配内存?