当我使用指针时,代码中出现了一个错误。当我创建两个对象,然后使用如下方法时,一切正常:
Insect* insect;
Leaf leaf;
leaf.affect(insect);(到目前为止,影响方法只会打印一些文本),但当我将其更改为:
Insect* insect;
Leaf* leaf;
leaf->affect(insect);调试器中有SIGSEGV和ntdll!RtlpMuiRegFreeRegistryInfo()。什么意思?
发布于 2016-01-26 17:24:18
Leaf leaf;创建作为自动对象存在的Leaf。然后,您可以在它上调用成员函数,因为您有一个有效的对象。
Leaf* leaf;创建一个指向Leaf的指针,它指向某个垃圾位置。当您尝试使用这个垃圾指针时,您有未定义行为,在本例中是一个SIGSEGV。
为了使第二种情况起作用,您需要为其分配内存,如下
Leaf* leaf = new Leaf;不要忘记,如果您使用new/new[],那么当您完成返回内存的指针时,需要调用delete/delete[]。
https://stackoverflow.com/questions/35019872
复制相似问题