gpt4 book ai didi

c++ - 我可以在 MacBook Pro 上分配的最大内存量是多少?

转载 作者:IT老高 更新时间:2023-10-28 12:55:15 25 4
gpt4 key购买 nike

我试图弄清楚在分配失败之前我可以分配多少内存。

这个简单的 C++ 代码分配一个缓冲区(大小为 1024 字节),分配给缓冲区的最后五个字符,报告,然后删除缓冲区。然后它将缓冲区的大小加倍并重复,直到失败。

除非我遗漏了什么,否则代码最多可以在我的 MacBook Pro 上分配 65 TB 的内存。这甚至可能吗?它如何分配比我机器上更多的内存?我一定错过了一些简单的东西。

int main(int argc, char *argv[])
{
long long size=1024;
long cnt=0;
while (true)
{
char *buffer = new char[size];
// Assume the alloc succeeded. We are looking for the failure after all.

// Try to write to the allocated memory, may fail
buffer[size-5] = 'T';
buffer[size-4] = 'e';
buffer[size-3] = 's';
buffer[size-2] = 't';
buffer[size-1] = '\0';

// report
if (cnt<10)
cout << "size[" << cnt << "]: " << (size/1024.) << "Kb ";
else if (cnt<20)
cout << "size[" << cnt << "]: " << (size/1024./1024.) << "Mb ";
else
cout << "size[" << cnt << "]: " << (size/1024./1024./1024.) << "Gi ";
cout << "addr: 0x" << (long)buffer << " ";
cout << "str: " << &buffer[size-5] << "\n";

// cleanup
delete [] buffer;

// double size and continue
size *= 2;
cnt++;
}
return 0;
}

最佳答案

当您请求内存时,操作系统保留在您实际使用之前不实际该内存的权利。

这就是这里发生的事情:您只使用了 5 个字节。我 1980 年代的 ZX81 可以应付。

关于c++ - 我可以在 MacBook Pro 上分配的最大内存量是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41400317/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com