C-programming.png

malloc与内存

所有程序都需要预留足够的内存来存储程序使用的数据,malloc函数能够在程序运行时分配更多的内存。malloc函数会找到空闲的内存块并返回内存块的首地址,而恰好char表示1字节,malloc()的返回类型被定义为指向char类型的指针。但从ANSI C标准开始,有了些变化。malloc函数原型为:

void *malloc(unsigned int num_bytes);

一个指向void的指针,相当于是一个通用类型,所以通常我们需要什么类型的指针对应进行强制转换即可,分配失败将返回空指针。

为什么需要malloc?

以往我们在学习c语言时,通常只是简单的使用int,float之类来声明变量。像这种变量,通常存放在栈区(stack),由编译器自动分配释放,存放函数的参数值,局部变量等值。而在实际编程中,我们需要足够的内存来保证程序的存储需求,由于stack区内存相对较小,所以我们需要使用malloc与free等函数来从堆区(heap)动态申请与释放内存,堆区要比栈区大得多。

已有 3 条评论

  1. 李奥纳多 李奥纳多

    哥,能深入一点吗

  2. 以后再深入点吧,哈哈

  3. 能深入,但是只能深入一点点

添加新评论