我可以通过添加ram来避免分段错误吗?

时间:2017-03-16 15:44:58

标签: c++

正如我的标题所要求的那样,我想知道如果我添加更多ram,我是否可以通过有力的方式避免我的程序中的分段故障崩溃?关于如何躲闪的任何建议都值得赞赏,但这个问题非常重要,因为它取决于是否升级到32gb ram而不是8

程序是用c ++编写的

2 个答案:

答案 0 :(得分:3)

就像"out of memory","分段错误"不是指RAM。

在典型的现代计算机中,每个进程都有自己的地址空间。那只是一堆地址。其中一些地址可能映射到RAM,但它们也可以映射到ROM,VRAM,磁盘上的文件或操作系统支持映射到进程地址空间的任何其他地址。

分段错误是对进程地址空间部分的无效访问。它们可能无效,因为地址不存在(因为它没有映射到任何地方),或者因为地址无法写入(因为它以只读方式映射)。它们是由程序中的错误引起的。

添加RAM不会改变任何进程地址空间的大小或布局。

答案 1 :(得分:1)

不,应用程序看到的内存是虚拟的。这意味着操作系统会重新映射应用程序看到支持物理内存的地址。

作为优化内存,applciation不请求不会映射到实际内存,如果应用程序尝试访问它将产生错误。

所以你有16 MB或16 GB的物理ram无关紧要。当程序中的错误导致它尝试访问它从未获得的内存时,会发生Segfaults。