当前位置: 首页 > news >正文

QT 非空指针 软件奔溃

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

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

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

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

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

例如

QPushButton *button;

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

如何安全地使用指针

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

QPushButton *button = nullptr;

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


http://www.mrgr.cn/news/96712.html

相关文章:

  • RAG优化:python从零实现Proposition Chunking[命题分块]让 RAG不再“断章取义”,从此“言之有物”!
  • SpringIoC和DI
  • Sink Token
  • Day3 蓝桥杯省赛冲刺精炼刷题 —— 排序算法与贪心思维
  • Redis 6.2.6 生产环境单机配置详解redis.conf
  • 深入解析拓扑排序:算法与实现细节
  • 【LeetCode 热题100】347:前 K 个高频元素(详细解析)(Go语言版)
  • nodejs:midi-writer-js 将基金净值数据转换为 midi 文件
  • 如何本地部署RWKV-Runner尝鲜CPU版
  • 动态规划入门:从记忆化搜索到递推
  • TypeError: __init__() got an unexpected keyword argument ‘device_type‘
  • 深度学习--softmax回归
  • 高效内存位操作:如何用C++实现数据块交换的性能飞跃?
  • Time spent invoking a CUDA kernel
  • 蓝桥杯准备(前缀和差分)
  • Android 中集成 Google 应用内评分
  • 洛谷题单2-P1424 小鱼的航程(改进版)-python-流程图重构
  • thinkcmf搭建
  • 游戏引擎学习第198天
  • 大模型高质量rag构建:A Cheat Sheet and Some Recipes For Building Advanced RAG