gpt4 book ai didi

c - 地址空间中未使用的内存是否受到保护

转载 作者:IT王子 更新时间:2023-10-29 01:09:12 26 4
gpt4 key购买 nike

进程地址空间中未使用的内存是否仅通过读取权限来保护,以便写入由未初始化指针指向的位置例如总是导致页面错误被操作系统捕获?或者不是这种情况,除了代码(当然被授予只读访问权限)之外的每个内存位置都被授予写访问权限?

我问这个是因为我的 friend 向我展示了他的代码,他没有初始化指针并写入它指向的内存,但他的程序仍然没有与适用于 Windows 的 mingw gcc 编译器崩溃,但总是崩溃在 mac 或 linux 中使用 visual c++。

我认为操作系统不保护未使用区域的内存,导致崩溃的原因是在 mingw 生成的代码中,随机指针值指向一些已使用区域,如堆栈、堆或代码,而在其他情况下,它指向一些空闲区域。但是,如果操作系统真的不保护未使用的区域,那么诸如未初始化指针之类的此类错误是否很难调试?

我猜这就是为什么建议总是在调用deletefree 后将NULL 赋值给指针,这样当用它访问某些东西时,它确实会导致可见的崩溃。

最佳答案

未初始化的指针不一定指向未使用的地址空间。它们很可能是恰好指向可写内存的值。例如堆栈上的指针恰好是先前执行的函数存储有效地址的位置。

关于c - 地址空间中未使用的内存是否受到保护,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7448984/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com