gpt4 book ai didi

c++ - 为什么未初始化的指针会导致接近 0 的内存访问冲突?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:50:03 27 4
gpt4 key购买 nike

据说经常(但不总是)当你在一个接近于零的内存位置(比如 89 美元)中得到一个 AV 时,你有一个未初始化的指针。
但我在 Delphi 书籍中也看到过这个......嗯......或者它们都是由同一作者写的???


更新:
引自 Bob Swart 等人的“C++ builder 6 开发人员指南”,第 71 页:

When the memory address ZZZZZZZZZ is close to zero, the cause is often an uninitialized pointer that has been accessed.

为什么会这样?为什么未初始化的指针包含低数字?为什么不用像 $FFFFFFF 这样的大数字或普通随机数呢?这是都市神话吗?

最佳答案

这混淆了“未初始化的指针”与空引用或空指针。对对象字段或指针索引的访问将表示为相对于基指针的偏移量。如果该引用为空,则偏移量通常是接近零的地址(对于正偏移量)或接近 native 指针大小最大值的地址(对于负偏移量)。

在具有这些特征性小(或大)值的地址处发生访问冲突是一个很好的线索,表明您有一个空引用空指针,具体而言,而不仅仅是一个未初始化的指针。未初始化的引用可以有空值,但也可以有任何其他值,具体取决于它的分配方式。

关于c++ - 为什么未初始化的指针会导致接近 0 的内存访问冲突?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54570303/

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