C语言 堆栈

来源:互联网 发布:锐捷网络和星网锐捷 编辑:程序博客网 时间:2024/04/26 05:28

今天写了一个错误程序:

#include <stdio.h>#include <stdlib.h>#include <string.h>struct test{char a[5];char b[5];};int main(){struct test test1;strcpy(test1.a,"1111111");strcpy(test1.b,"2222222");printf("%s\n",test1.a);printf("%s\n",test1.b);return 0;} 

运行结果:
111112222222
2222222
--------------------------------
Process exited after 0.08035 seconds with return value 0
请按任意键继续. . .
可以发现属性a的值已经变了,这是为啥呢,因为所申请到的内存是连续的,而在给属性a赋值的时候,长度大于
所申请到的内存,那么会从a的起始位置,一直往后赋值,这样的结果是把属性b的内存也占用了(因为是连续的)
所以这样容易造成数据的丢失!!切记不可!!

说说堆栈,我所理解的堆栈它们都是内存,堆是给程序员使用的,可以去申请内存,但记住用完之后也要释放内存。而

栈是个系统用的,由系统自动分配自动释放,不需要去管理。

这样理解很浅显,但是够使了!


完 !!

0 0
原创粉丝点击