02 2025 档案
摘要:内联 函数调用流程: 程序执行顺序转移到函数所存放的内存中某个地址,将函数的程序内容执行完后,再返回到调用函数前的地方。要达到这样的目的必须在转去前,保护现场并存储执行的地址,转回后先恢复现场,并按照原存储地址继续执行。因此,函数调用有一定的时间和空间方面的开销,影响其效率。特别是对于一些函数体不大
阅读全文
摘要:在C++中(注意,您提到的函数签名看起来更像是C++的命名修饰规则,而不是纯C的),编译器会对函数名进行修饰(name mangling),以便支持函数重载和命名空间等特性。这种修饰规则因编译器而异,但大多数现代C++编译器(如GCC、Clang和MSVC)都遵循一定的命名规则来确保每个函数名在编译
阅读全文
摘要:描述确定一个事物,是行为(功能),而不是数据。例如:写字的,吸墨水的,笔尖是金属的。(毛笔)行为描述这个事物是钢笔。而不是黑色的等数据。 软件设计模式: 先搞清有哪些事物,联系人个人信息 C语言模块化设计与C++面向对象设计的区别:分离实体、找对象、拉关系。 分离实体:看项目中有哪些实体要参与?例如
阅读全文
摘要:当需要引用外部资源的时候,按照如下规范处理,很大的解决了重复释放等问题。 1、引用资源的指针(或句柄)初值必须为错误值。 2、申请资源后,必须检查是否成功。 3、按照需求规定处理错误后,程序转移到退出流程。 4、使用资源。 5、释放资源前必须先检查指针或句柄是否有效。 6、释放资源后,必须将指针(或
阅读全文
摘要:为什么调试堆。当堆附加数据被破坏的时候(一般是对堆地址做增量操作导致的越界)程序会崩溃并弹出错误报告框。 首先,通过错误弹窗我们可以得到堆的编号以及堆所在位置等信息。 此时,我们点击重试按钮,此时代码定位到出问题的地方,可以在堆栈窗口中查看定位到的出问题的模块。 通过调用堆栈窗口,我们可以定位到自己
阅读全文
摘要:文件(资源) 操作系统把硬件抽象为文件,统一打开、关闭、读和写来对待。 在系统里泛指所有的设备,也可以叫资源。 一个文件只能被一个程序打开(共享文件除外) 安全检查: 数据设计到引用操作资源问题,包括堆、文件和句柄等,每调用一个函数都需要假设返回错误值。如果操作失败应该做错误处理。(自动区除外【堆、
阅读全文
摘要:位运算 逻辑运算表 /********************************************************************** 逻辑运算表 A and 0 = 0 A xor 1 = npt A A and 1 = A A xor A = 0 A or 0 = A
阅读全文
摘要:strlen 和 sizeof 是 C 语言中用于获取数据长度的两个不同函数,它们有不同的用途和行为。 strlen 头文件:需要包含 <string.h> 头文件。 功能:计算以空字符('\0')结尾的字符串的长度,不包括终止的空字符。 参数:一个指向字符数组(字符串)的指针。 返回值:返回字符串
阅读全文