我的意思是这个 - 分配小内存块比分配大内存块快吗?即:
int * dummy = new int; // A
int * dummy2 = new int[2]; // A
int * dummy3 = new int[1000000]; // B
VeryVeryBigStruct * dummy4 = new VeryVeryBigStruct; // B
(A)
小额分配,(B)
会很大。
我知道我可以写一个简单的程序并为自己测试但我实际上尝试过甚至QueryPerformanceCounter()
返回0
时间进行单个小分配(这有点令人惊讶,因为所有分配都应该是因此,在1台计算机上进行1次测试几乎不可靠,所以我想听听你对此事的了解。
另外,我想知道10 N
字节的分配是否比1 10 * N
字节的分配更快/更慢(我会说它应该更慢但是谁知道)。
答案 0 :(得分:3)
取决于操作系统。一般来说,它不应该有很大的不同,因为系统就像Linux(我假设现代Windows等)使用延迟分配。也就是说,在您访问之前,它们会分配虚拟内存空间,而不会实际分配物理内存。
您可以在其他SO帖子中看到更多详细信息:
Does malloc lazily create the backing pages for an allocation on Linux (and other platforms)?