使用指针时,我的代码有错误。当我创建两个对象然后使用如下方法时,一切正常:
Insect* insect;
Leaf leaf;
leaf.affect(insect);
(到目前为止,fect方法只输出一些文本)
但是当我将其更改为:
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/