开博第一篇!!! 应用程序的堆和栈

王朝other·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

例子:

main()

{

char str1[1024];

char *str2;

str2 = new char[1024];

delete [] str2;

}

上面的main函数中,str1的内容在栈里面,str2通过new得到的内存在堆里.

栈的内容在函数返回的时候,自动被清空.所以对于str1,我们不需要调用delete 或者 free去释放. 而对于在堆上分配的空间,需要调用delete 或者 free来手动释放.

如果要把str1放在堆上,可以在函数体外定义char str1[1024].这样str1将存在于程序的运行的整个周期.

另外,栈的大小是有限制的,所以不能在函数里面定义一个很大数组.例如 char str1[1024*1024*100].

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航