QT 非空指针 软件奔溃
在用QT的实际项目中,出现如下现象:
运行软件再关闭软件,然后再运行软件会崩溃。等待5~10分钟,再运行软件,又正常,百思不得其解,后面找到原因是在头文件里定义指针变量时没有赋初nullptr,赋初值nullptr后软件正常,没有出现奔溃情况。
在Qt框架中,指针的默认行为与其在C++中的行为是一致的。
在C++中,如果一个指针没有被显式地初始化,其值是未定义的(通常是随机的,依赖于内存的状态),这意味着你不能保证它指向一个有效的内存地址。
同样,在Qt中,如果你声明一个指针而没有初始化,它将保持其默认的未定义值,也有可能为空。
例如
QPushButton *button;
在这个例子中,button
是一个指向 QPushButton
的指针,但它没有被初始化。尝试使用这个未初始化的指针会导致未定义行为,比如可能导致程序崩溃或者访问非法内存。
如何安全地使用指针
初始化指针:确保所有的指针在使用前被初始化。你可以将其设置为 nullptr
(C++11及以后版本),表示该指针不指向任何对象。
QPushButton *button = nullptr;
然后判断指针为空 ,new 一个对象。