- 博客(68)
- 收藏
- 关注
原创 程序内存中堆(Heap)和栈(Stack)的区别
想象一下,我们做饭时,切菜、备料都是在厨房的操作台上完成的。操作台空间不大,但取放东西极其方便,做完一道菜,台面也就清理干净了。这就是栈。而做饭所需的大量食材、调料,我们不可能全堆在操作台上,而是会存放在一个很大的储物间或冰箱里,需要时再去取。这个储物间就是堆。
2025-09-12 16:09:16
1127
原创 数组与链表的区别
想象一下,你要组织一场活动。数组就像一栋楼里连续的宿舍房间。房间号是连续的(1001, 1002, 1003...),你知道1010房间肯定在1009旁边。安排入住和查房非常快,但想在中途插入一个新房间?几乎不可能。链表则像是分散在城市各处的公寓。每个公寓单元都知道下一个公寓的地址。你可以轻松地在两个公寓之间插入一个新的公寓,只需更新一下“下一个地址”的指针即可,但如果你想找到第50个公寓,你就得从第一个开始,一个一个地址找过去。
2025-09-10 14:52:11
634
原创 Qt信号槽机制
信号槽机制是Qt框架最核心的特性之一,也是Qt区别于其他开发框架的重要标志。它提供了一种类型安全、松耦合的对象间通信方式,极大地提高了代码的可维护性和模块化程度。
2025-09-10 14:50:38
979
原创 栈和队列的区别
想象一下你在洗碗:栈 (Stack) 就像一摞刚洗好的盘子。你总是把最新洗好的盘子放在最上面,也用最上面的盘子。这就是 ‘后进先出’(LIFO) 。再想象一下你在奶茶店排队:队列 (Queue) 就像一支队伍。最先来的人排在队伍的最前面,也最先被服务离开。新来的人只能排在队伍的最后面。这就是 ‘先进先出’(FIFO) 。这两种不同的处理顺序,就是栈和队列最根本的区别。
2025-09-09 16:51:35
1118
原创 C/C++中基本数据类型在32位/64位系统下的大小
在C/C++开发中,尤其是在跨平台(如32位与64位系统)项目中,我们经常会遇到一些‘诡异’的问题:为什么这段代码在32位系统上运行正常,到64位就崩溃了?其中一个最常见的根源就是对数据类型的大小理解不透彻。今天,我们就来彻底弄清楚int、long、指针等类型在不同系统架构下究竟占多少字节。
2025-09-09 16:50:35
714
原创 QT之问题解决记录5:Debug编译没问题,切换Release编译有警告,运行时弹窗调试断言报错,排查问题,解决问题
-1: warning: LNK4098: 默认库“MSVCRT”与其他库的使用冲突;请使用 /NODEFAULTLIB:library。该警告表明项目中存在C运行库的混合使用冲突,通常发生在调试(Debug)和发布(Release)模式下连接了不同类型的库。
2025-09-04 15:02:24
198
原创 QT之问题解决记录4:Release EXE加载了带有“d”结尾的Qt DLL,排查问题,解决问题
右键点击“此电脑” -> “属性” -> “高级系统设置” -> “环境变量”。查看系统变量中的PATH。确保其中没有指向 Qt Debug 版bin目录的路径。如果有,请将其删除,或者将 Release 版的bin目录路径移到比 Debug 版更靠前的位置。重要:修改环境变量后,必须重启 Qt Creator才能使更改生效。最佳实践:除非有特殊需求,否则应避免在.pro文件中硬编码中间文件和输出目录的绝对路径。构建隔离。
2025-09-04 14:54:55
1273
原创 QT项目文件(.pro)指南
Qt项目文件(.pro文件)是Qt开发的核心配置文件,它使用qmake工具来管理项目的构建过程。一个良好组织的.pro文件不仅能确保项目正确编译,还能大大提高代码的可维护性和团队协作效率。本文将深入探讨.pro文件的结构、语法和最佳实践。
2025-09-02 15:56:40
1286
原创 C/C++条件编译:深入理解#ifndef/#endif守卫
在C/C++编程中,条件编译是预处理器提供的一种强大功能,它允许开发者在编译前根据特定条件选择性地包含或排除代码段。其中最常见的应用就是头文件守卫,用于防止头文件被重复包含。条件编译是指使用预处理指令(如#ifdef#ifndef#if#endif等)来控制哪些代码会被编译器处理。这些指令在真正的编译阶段开始前由预处理器处理。// 只有在DEBUG_MODE被定义时才会编译的代码#endif#else#endif#ifndef#endif守卫是C/C++编程中不可或缺的工具,它们:✅。
2025-09-02 15:29:57
1178
原创 JavaScript初识:给小白的第一堂编程课
如果你点开了这篇文章,说明你对“JavaScript”这个名字感到好奇,但又不知道它到底是什么。别担心,我当初也一样!今天,就用大白话,像聊天一样,把JavaScript(简称JS)彻底搞明白。
2025-08-28 22:42:19
540
原创 彻底搞懂进程与线程的区别及进程间通信(IPC)方式
在操作系统的世界里,进程(Process) 和 线程(Thread) 是程序执行的两个最基本概念,也是面试中百考不厌的核心知识点。无论是为了应对技术面试,还是为了写出更高效、更稳定的程序,彻底理解它们都至关重要。
2025-08-28 22:23:38
1429
原创 C/C++内存分区:栈、堆、BSS、数据区、代码区全解析—— 深入理解全局变量、静态变量、局部变量、常量字符串的内存分配与生命周期
C/C++内存分区:栈、堆、BSS、数据区、代码区全解析—— 深入理解全局变量、静态变量、局部变量、常量字符串的内存分配与生命周期
2025-08-28 22:01:47
962
原创 C语言中的static vs C++中的static:相同关键字,不同境界
C和C++中一个既基础又关键的知识点——static关键字。虽然名字相同,但C++由于其面向对象的特性,为static赋予了更强大的能力。接下来将清晰地梳理它们的异同。
2025-08-27 23:42:49
993
原创 QT之QSS的使用方法和常用控件的样式设置
QSS(Qt Style Sheets)是QT中用于界面美化的强大工具,类似于CSS但针对QT控件进行了优化。下面将详细介绍QSS的使用方法和常用控件的样式设置。
2025-08-22 17:50:51
689
原创 QT之问题解决记录3:内存管理问题
在开发QT应用程序时,常常需要动态创建对象(如QSerialPort、QTimer、自定义控件等)。由于C++需要手动管理内存,如果处理不当,可能导致内存泄漏或程序崩溃。特别是在复杂的UI界面或长时间运行的程序中,内存管理问题会逐渐累积,影响系统稳定性。
2025-08-12 16:03:21
566
原创 QT报错:mainwindow.obj:-1: error: LNK2019: 无法解析的外部符号 “public: __thiscall DataLogger::~DataLogger(void)“
mainwindow.obj:-1: error: LNK2019: 无法解析的外部符号 "public: __thiscall DataLogger::~DataLogger(void)" (??1DataLogger@@QAE@XZ),该符号在函数 "public: virtual __thiscall MainWindow::~MainWindow(void)" (??1MainWindow@@UAE@XZ) 中被引用
2025-06-18 17:33:23
288
原创 SimpleQtLogger 使用总结
SimpleQtLogger 是一个轻量级、易集成的 Qt 日志库,仅需两个文件(.h 和 .cpp)即可实现滚动日志记录功能。它支持多日志级别(Debug、Info、Warning、Error 等),并可将日志输出到控制台或文件,适用于调试、生产环境监控等场景。
2025-06-15 23:17:49
555
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅