栈区和堆区

   今儿写个小程序,编译有警告,经大神指点发现原因涉及栈区和堆区:(代码见下)大体说是这样的,一个程序在运行期间所占的内存区域分为程序区(存代码)和数据区(存放运行过程中所用到的数据),而数据区又根据其中存放数据的创建时机和生命周期等,被划分为静态存储区和动态存储区;

  动态存储区根据内存分配方式的不同,又可以分为堆区(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));

}

    完了。

posted @ 2013-12-17 20:33  hityu  阅读(197)  评论(0)    收藏  举报