03 2014 档案
摘要:1 #include 2 3 typedef union _A{ 4 int i; 5 char c[2]; 6 }A; 7 8 A g_a; //266 9 10 int main(){11 static A s_a; // 26612 A a_a;13 14 s_a.c[0] = 10;15 s_a.c[1] = 1;16 17 g_a.c[0] = 10;18 g_a.c[1] = 1;19 20 a_a.c[0] = 10;21 a_a.c[1] = 1;22 23 printf("%...
阅读全文
摘要:从编译原理上来说,声明是仅仅告诉编译器,有个某类型的变量会被使用,但是编译器并不会为它分配任何内存。而定义就是分配了内存。 对于下面的两句代码: void Func() { int a; int b=1; a=0; } 对于第一行代码,编译器不会做任何事,它不会为它在栈中分配一点东西,直到第三句,a=0;时,编译器才会将其压入栈中。而对于int b=1;这一句,编译器就会生成一条指令,为它赋值。如果反汇编,看到的代码可能是这样的: push 1; push 0; 当然,并不一定编译器就会样做,也有可能在声明int a时,编译器就会把一个废值入栈,到第三条再为其赋值,这要看编译器的具体取舍,..
阅读全文
摘要:一、起源 C++内存分成5个区,分别是堆、栈、自由存储区、全局/静态存储区和常量存储区。 但这个自由存储区这么一听还是模模糊糊的,和堆好像是一样的,还有同学说起这个问题。 二、个人理解 关于自由存储区和堆的区别,我是这样理解的 (1)字面意思是“自由存储”区,那就是可以随便 malloc它,随后我们
阅读全文
摘要:1 /**************************************************************************** 2 Function: //create_logs_folder() 3 Description: //创建日志文件夹 4 Input: // 5 Return: // 6 7 *****************************************************************************/ 8 void High_Accuracy_Time_Seed_...
阅读全文