gpt4 book ai didi

c++ - ntdll!RtlpMuiRegFreeRegistryInfo() 和 SIGSEGV 同时使用指针

转载 作者:行者123 更新时间:2023-11-28 02:12:51 28 4
gpt4 key购买 nike

当我使用指针时,我的代码出现错误。当我创建两个对象然后使用如下方法时一切正常:

Insect* insect;
Leaf leaf;
leaf.affect(insect);

(到目前为止,影响方法只打印一些文本)但是当我把它改成:

Insect* insect;
Leaf* leaf;
leaf->affect(insect);

我在调试器中有 SIGSEGV 和 ntdll!RtlpMuiRegFreeRegistryInfo()。什么意思?

最佳答案

Leaf leaf;

创建一个作为自动对象存在的 Leaf。然后您可以调用它的成员函数,因为您有一个有效的对象。

Leaf* leaf;

创建一个指向 Leaf 的指针,它指向一些垃圾位置。当您尝试使用该垃圾指针时,您有 undefined behavior在这种情况下是一个 SIGSEGV。

为了使第二种情况工作,你需要为它分配内存

Leaf* leaf = new Leaf;

不要忘记,如果您使用 new/new[] 那么您需要调用 delete/delete[] 当您完成指针返回内存时。

关于c++ - ntdll!RtlpMuiRegFreeRegistryInfo() 和 SIGSEGV 同时使用指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35019872/

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