c++ - Malloc 分配的内存多于 RAM

标签 c++ c memory-management malloc

我刚刚执行了一个程序,该程序在 12 MB 的机器(QEMU Emulated!)中 mallocs 13 MB。不仅如此,我什至浏览了内存并在其中填充了垃圾......

void 
large_mem(void) 
{
  #define LONGMEM  13631488
  long long *ptr = (long long *)malloc(LONGMEM);
  long long i;
  if(!ptr) {
     printf("%s(): array allocation of size %lld failed.\n",__func__,LONGMEM);
     ASSERT(0);
  }
  for(i = 0 ; i < LONGMEM ; i++ ) { 
    *(ptr+i)=i;
  }
  free(ptr);
}

这怎么可能?我原以为会出现段错误。

最佳答案

它被称为虚拟内存,是为您的程序分配的。这不是您称为 RAM 的真实内存。

虚拟内存也有最大限制,但它高于 RAM。它由您的操作系统实现(和定义)。

关于c++ - Malloc 分配的内存多于 RAM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7504139/

相关文章:

c++ - 如何在 Eclipse C/C++ 上安装 libevent

c - 为什么像 isdigit() 这样的函数会返回一个随机的非零值?

java - Android : dominator_tree does not show all the instances of some objects内存分析

c++ - QRegExp - 如何获取两个 HTML 标签之间的特定文本

c++ - GTK 显示小部件

c - 为什么 scanf 在写入字符串文字时没有按预期工作?

linux - linux内核中的大尺寸kmalloc kmalloc

iphone - 在此代码中何处释放CFStringRef

c++ - 同一类使用的映射引用类

c++ - wxWidgets 在 wxPanel 上绘制 wxGLCanvas