alloca函数
该函数的定义如下:
void *alloca(size_t size);
函数说明:该函数在程序的“栈”上申请 size 个字节的内存空间,如果申请成功,返回该内存块的首地址,否则,返回NULL。
就是在程序的“栈”上申请内存块,得到的内存块不需要调用free()函数进行释放。
程序测试例子如下:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void)
{
char* p;
p = (char*)alloca(32);
strcpy(p, "wwwabc");
printf("p = %s\n", p);
free(p);
return 1;
}
程序运行结果如下:
gcc test.c -o out
mylinux@ubuntu:~/test$ ./out
p = wwwabc
Segmentation fault
可以看到,调用alloca()能够正确申请内存块,函数的返回值是内存块的首地址,可以给内存块拷贝字符串。
但是,调用free()是否内存块的时候,就出现异常!因为,alloca()函数是在“栈”上申请内存块,不需要手动释放内存块。
//===============================================================
只需要99元就可以投资自己,掌握Linux系统编程!主要传授《Linux C/C++程序设计》《Linux 系统编程》,主页有学习视频!
只需要99元就拥有全部课程和资料,让我们用技术改变自己,改变生活,改变世界!
视频可以百度搜索:韦凯峰Linux编程学堂