今天去面试,被问了一个问题,没回答上来。5555555555555555555,事后查阅相关资料就弄懂了,现记录如下:

问题:

    什么时候在中分配内存和在中分配内存?


答:使用malloc函数就是在堆中分配内存,malloc(int size)函数返回的结果是一个int型或unsigned int型的地址,从这个地址到该地址+size这一段内存就归你用了。当然,你mallo了这一段内存,当然要人为的调用free函数把该段内存释放掉,系统不会自动回收这一段内存,如果你不释放掉这一段内存的话就会造成内存泄漏。

那什么时候在栈中分配内存呢?

    你在一个函数内定义一个变量或定义一个数组,如int i或int data[100]等等,就是在栈中分配内存。一个进程有系统栈和用户栈,定义一个变量或定义一个数组就是在这些栈中分配内存。