转自:http://blog.csdn.net/cywosp/article/details/10730931 有些时候我们在编写代码或者阅读开源项目时经常会遇到一些陌生的宏定义,在找遍所有源代码都没发现其在哪里被定义过,这时这些宏定义很可能是系统编译器自己定义的,例如 #ifdef RW_SPINLOCK_USE_X86_INTRINSIC_ // A more balanced Read-Write spin lock implemented based on GCC intrinsics.…
最近学习内存分布,通过gdb调试发现一些问题,栈空间变量地址应该是从高往低分布的,但是调试发现地址虽然是从高往低分布,但是变量地址的顺序是乱的,请教同事他说可能是gcc/g++默认启用了堆栈保护,关于堆栈保护可以查看这篇文章https://www.ibm.com/developerworks/cn/linux/l-cn-gccstack/ #include <stdio.h> int main() { char a = 'a'; char b = 'b'; int i = 20; retu…