QT 非空指针 软件奔溃

在用QT的实际项目中,出现如下现象:

运行软件再关闭软件,然后再运行软件会崩溃。等待5~10分钟,再运行软件,又正常,百思不得其解,后面找到原因是在头文件里定义指针变量时没有赋初nullptr,赋初值nullptr后软件正常,没有出现奔溃情况。

在Qt框架中,指针的默认行为与其在C++中的行为是一致的。

在C++中,如果一个指针没有被显式地初始化,其值是未定义的(通常是随机的,依赖于内存的状态),这意味着你不能保证它指向一个有效的内存地址。

同样,在Qt中,如果你声明一个指针而没有初始化它将保持其默认的未定义值也有可能为空

例如

QPushButton *button;

在这个例子中,button 是一个指向 QPushButton 的指针,但它没有被初始化。尝试使用这个未初始化的指针会导致未定义行为,比如可能导致程序崩溃或者访问非法内存。

如何安全地使用指针

初始化指针:确保所有的指针在使用前被初始化。你可以将其设置为 nullptr(C++11及以后版本),表示该指针不指向任何对象。

QPushButton *button = nullptr;

然后判断指针为空 ,new 一个对象。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值