C语言杂谈
2015-08-27 13:36
387 查看
附上原始排版链接:点我
- 数组溢出
- 数溢出
- 指针溢出
- 缓冲区溢出
- 栈溢出
…
打个比方,我看到很多早期的程序员似乎不知道有这条指令 #pragma once ,他们会用各种说辞为自己开脱
下面的这种可以做版本控制 但是我一般会另外写宏,个人还是推荐写
例如
位域中比较麻烦的要数其大小与对齐。
计算的最后,结构的总大小要是最大成员的整数倍。
修饰函数,表示本函数不能被其他文件使用。
以上是一点点杂谈,可能依旧有错误不足之处,请多包涵,如果可以的话也请你能给予指正。
溢出
溢出有以下几种(不全):- 数组溢出
- 数溢出
- 指针溢出
- 缓冲区溢出
- 栈溢出
变量的生命周期和存储位置
全局变量 和 静态(Static)变量在静态区,存在与整个运行周期。…
#pragma()
#pragma once
这是一条相对重要的预编译指令打个比方,我看到很多早期的程序员似乎不知道有这条指令 #pragma once ,他们会用各种说辞为自己开脱
#pragme ocne // 该文件只包含一次,一般放在头文件的最上方 等同于 #ifndef DEBUG #define DEBUG xxxxxxxx #endif // DEBUG
下面的这种可以做版本控制 但是我一般会另外写宏,个人还是推荐写
#pragma ocne,版本控制另外写宏
#pragma hdrstop
预编译头到此为止,后面的头文件不进行编译#pragma warming(disable:xxxx;once:xxxx;error:xxxx)
这个就不说了,一般用来忽略警告#pragma comment()
一般用来链接静态库#pragma pack()
选择数据对齐方式例如
#pragma pack(1)一字节对齐,一般成对出现,可以压缩 结构体的大小
#pragma code_seg()
写壳或者 之类的 PE 工具可能会用到,指定代码段的位置#pragma alloc_text()
将函数放入指定代码段中,我看过一个例子是在写 SMC 加密时用到过位域|位段
这个概念是很多初学者容易忽略的概念。位域中比较麻烦的要数其大小与对齐。
计算的最后,结构的总大小要是最大成员的整数倍。
Static
修饰变量,变量会存储于静态区,故不受到栈回收机制的影响。修饰函数,表示本函数不能被其他文件使用。
以上是一点点杂谈,可能依旧有错误不足之处,请多包涵,如果可以的话也请你能给予指正。
相关文章推荐
- C语言Log记录调试
- C++循环顺序队列
- 来自--C语言指针的小故事
- 浅谈C++三层架构
- 虚函数和作用域(C++ primer 第五版)P550
- c++中的字符串与数字相互转换
- c++通过mac地址 获取 设备UUID
- C++内存管理
- C语言指针使用小结
- iOS开发-C语言-数组
- C语言中计算正弦的相关函数总结
- C/C++字符串分割
- c++中map的排序
- [C++] Most Vexing Parse
- C++ Explicit Constructors(显式构造函数)
- C语言中正切的相关函数总结
- 字符串组合问题(无重复)
- c++读取16进制文件
- POJ C++程序设计 编程题#2 魔兽世界之二:装备
- c++builder2010安装好了以后,好多功能键显示灰色