笔记–alloca函数

来源:互联网 发布:计算器在windows 编辑:程序博客网 时间:2024/06/17 05:23

《c专家编程》笔记–alloca函数

alloca()函数用来在栈中分配size个字节的内存空间,因此函数返回时会自动释放掉空间。alloca函数定义及库头文件如下:

/* Allocate a block that will be freed when the calling function exits.  */
extern void *alloca (size_t __size) __THROW;   //从栈中申请空间

返回值:若分配成功返回指针,失败则返回NULL。

它与malloc()函数的区别主要在于:

alloca是向栈申请内存,无需释放,malloc申请的内存位于堆中,最终需要函数free来释放。

int main(){int *p = (int *)alloca(sizeof(int)*10);free(p);//此时不能用free()去释放,会导致错误return 0;}

malloc函数并没有初始化申请的内存空间,因此调用malloc()函数之后,还需调用函数memset初始化这部分内存空间;alloca则将初始化这部分内存空间为0。

int *p = (int *)alloca(sizeof(int)*10);
free(p);//此时不能用free()去释放,会导致错误
return 0;
}
0 0
原创粉丝点击