首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用指针时,ntdll!RtlpMuiRegFreeRegistryInfo()和SIGSEGV

使用指针时,ntdll!RtlpMuiRegFreeRegistryInfo()和SIGSEGV
EN

Stack Overflow用户
提问于 2016-01-26 17:20:25
回答 1查看 29关注 0票数 0

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

代码语言:javascript
复制
Insect* insect;
Leaf leaf;
leaf.affect(insect);

(到目前为止,影响方法只会打印一些文本),但当我将其更改为:

代码语言:javascript
复制
Insect* insect;
Leaf* leaf;
leaf->affect(insect);

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-26 17:24:18

代码语言:javascript
复制
Leaf leaf;

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

代码语言:javascript
复制
Leaf* leaf;

创建一个指向Leaf的指针,它指向某个垃圾位置。当您尝试使用这个垃圾指针时,您有未定义行为,在本例中是一个SIGSEGV。

为了使第二种情况起作用,您需要为其分配内存,如下

代码语言:javascript
复制
Leaf* leaf = new Leaf;

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35019872

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档