栈区和堆区
今儿写个小程序,编译有警告,经大神指点发现原因涉及栈区和堆区:(代码见下)大体说是这样的,一个程序在运行期间所占的内存区域分为程序区(存代码)和数据区(存放运行过程中所用到的数据),而数据区又根据其中存放数据的创建时机和生命周期等,被划分为静态存储区和动态存储区;
动态存储区根据内存分配方式的不同,又可以分为堆区(heap)和栈区(也称作调用区,call stack)。我们用malloc()函数动态申请的内存在堆区(想着free(),否则产生内存泄露),如果没手动释放从堆区申请到的内存,程序将在退出的时候自动释放。 栈区的数据则会在函数退出是释放??,所以newstr和error行会warning。
char* EliminateBracket(char *s)
{
char newstr[100] = {0};
char error[100] = "wrong!!!";
.................
return newstr;
}
int main()
{
printf("%c",EliminateBracket(string));
}
完了。
浙公网安备 33010602011771号