跳动百科

malloc分配的是堆还是栈(malloc)

舒洁绿
导读 大家好,我是小跳,我来为大家解答以上问题。malloc分配的是堆还是栈,malloc很多人还不知道,现在让我们一起来看看吧!1、malloc申请的空...

大家好,我是小跳,我来为大家解答以上问题。malloc分配的是堆还是栈,malloc很多人还不知道,现在让我们一起来看看吧!

1、malloc申请的空间是在"堆"上的 平时我们都是用声明变量来申请空间的,此时申请到的空间是"栈"上的 栈上的空间, 不需要程序员负责释放. 例如,在以下函数中 int go() { int a; int b[50]; } 在运行到go里面时, 申请了4个字节(int类型是4个字节)的空间来放变量a, 4*50=200个字节的空间来放变量数组b 在调用go时 // ... go(); // ... 在运行到go()函数的里部,会申请相应的空间,但在退出go()以后,这些空间就会被废弃. 这在有些时候不能够满足我们的需求,因而就要用到malloc和free malloc申请的空间,要由我们程序员来负责释放 int go() { int* a; a = malloc(sizeof(int)); } 这样就在堆上申请到了4个字节的空间了(sizeof(int)能够得到int的大小, 返回4). 我们还可以 int* a; a = malloc(100 * sizeof(int)) 来申请到100个int的空间. 退出go以后,空间不会释放.所以要用free来释放. :)。

本文到此讲解完毕了,希望对大家有帮助。