程序是用c ++编写的
答案 0 :(得分:3)
就像"out of memory","分段错误"不是指RAM。
在典型的现代计算机中,每个进程都有自己的地址空间。那只是一堆地址。其中一些地址可能映射到RAM,但它们也可以映射到ROM,VRAM,磁盘上的文件或操作系统支持映射到进程地址空间的任何其他地址。
分段错误是对进程地址空间部分的无效访问。它们可能无效,因为地址不存在(因为它没有映射到任何地方),或者因为地址无法写入(因为它以只读方式映射)。它们是由程序中的错误引起的。
添加RAM不会改变任何进程地址空间的大小或布局。
答案 1 :(得分:1)
不,应用程序看到的内存是虚拟的。这意味着操作系统会重新映射应用程序看到支持物理内存的地址。
作为优化内存,applciation不请求不会映射到实际内存,如果应用程序尝试访问它将产生错误。
所以你有16 MB或16 GB的物理ram无关紧要。当程序中的错误导致它尝试访问它从未获得的内存时,会发生Segfaults。