C语言
FAR
勿以浮沙筑高台
展开
-
C函数调用与堆栈
这几天突然很想弄明白c函数调用时栈的使用情况,上网查了一下资料,自已也研究了一下,这篇blog就把我的所得记录下来吧。 这篇blog试图讲明当一个c函数被调用时,一个栈帧(stack frame)是如何被建立,又如何被消除的。这些细节跟操作系统平台及编译器的实现有关,下面的描述是针对运行在Intel奔腾芯片上Linux的gcc编译器而言。c语言的标准并没有描述实现的方式,所以,不同的编译器,处理转载 2013-02-26 22:25:30 · 444 阅读 · 0 评论 -
反汇编角度解释C++语言中引用的原理
给出一个很简单的引用实例C++源码: #include using namespace std; void Add(int& __nVar) { __nVar++; } void main() { int nVar=0x00000001; Add(nVar); cout } 运行结果:nVar=2 下面是反汇编代码:原创 2013-02-28 23:12:33 · 606 阅读 · 0 评论 -
反汇编解析#define和const的区别
#define是一个真常量,而const却是由编译器判断实现的常量,严格来说是一个伪常量; 在实际中,由const定义的常量其实仍然是一个变量,只是编译器在编译过程中进行了检查,发现修改就会报错; 如果利用指针得到const int变量的地址,然后根据地址强制改变这个变量的值会有什么情况呢?编译器会不会报错? 变量值会不会改变? C++代码如下: vo原创 2013-03-01 21:33:00 · 769 阅读 · 0 评论 -
SIZEOF()计算结构体的问题;
下面这样的一个结构体: struct stu1 { int i; char c; int j; }; 先介绍一个相关的概念——偏移量。偏移量指的是结构体变量中成员的地址和结构体变量地址的差。结构体大小等于最后一个成 员的偏移量加上最后一个成员的大原创 2013-03-25 20:09:32 · 686 阅读 · 0 评论