我想现在这些指令是如何分配内存的。C++ new/new [],它如何分配内存?
例如如果我得到了代码:
x = new int[5];
y = new int[5];
如果这些被分配它是如何看起来像RAM? 是否为每个变量或块(内存页或您如何调用它 - 32位上的4KB大小)为2个变量共享保留了整个块?
我在任何手册中都找不到我的问题的答案。感谢所有回复。
我在维基百科上找到: 页面的内部碎片 很少进程需要使用精确数量的页面。结果,最后一页可能只会部分满,浪费了一些内存。较大的页面大小通过这种方式显然增加了浪费内存的可能性,因为更多可能未使用的内存部分被加载到主内存中。较小的页面大小确保与分配中所需的实际内存量更加匹配。例如,假设页面大小为1024KB。如果一个进程分配1025KB,则必须使用两个页面,导致1023KB未使用空间(其中一个页面完全占用1024KB,另一个页面仅占用1KB)。
这就是我的问题的答案。无论如何,谢谢你们。
所以一个小问题:现在在我的系统(debianx64)上,页面大小是4096字节。有没有可能减少它?我想在内存中存储很多小块,但即使保留1个字节,我也不能使用另一个4095,因为此处添加了第1条消息中的内容。这是真的还是我错了? – 2010-12-12 13:42:34