gpt4 book ai didi

objective-c - 什么机制检测未分配内存的访问?

转载 作者:搜寻专家 更新时间:2023-10-30 19:48:19 25 4
gpt4 key购买 nike

有时,我会遇到类似下面的差一错误:

unsigned int* x = calloc(2000, sizeof(unsigned int));

printf("%d", x[2000]);

我已经超出了分配区域的末尾,所以我在运行时收到了一个 EXC_BAD_ACCESS 信号。我的问题是:这是如何检测到的?看起来这只会默默地返回垃圾,因为我只偏离了一个字节,而不是整页。系统的哪一部分阻止我在 x + 2000 返回垃圾字节?

最佳答案

内存系统在其内存字段的开头和结尾处有标记值,超出了您分配的字节数。当您释放内存时,它会检查这些值是否完好无损。如果没有,它会告诉你。

关于objective-c - 什么机制检测未分配内存的访问?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8452140/

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