C语言函数alloca

C语言函数alloca,第1张

众所周知,C++在创建数组时,尺寸指定必须是个常数,不能是变量,比如:
int length = 100;
char message[length]; // error
动态分配方式在堆区构造数组,之后要手动释放
// C++
char* message = new char[100]; 
delete [] message;
// C
char* message = (char*)malloc(100*sizeof(char))
free(message);
利用alloca()栈区动态分配

\quad\quad 有时候我们只是想暂时打印日志信息或者错误信息,并不需要长期保存其内容,随着程序运行超出数组作用域,内存自动释放。下次需要的时候再动态的申请,不用管理释放,这样很方便

if(!result)
{
	int length;	
	length = getLogLength();  		//凭空捏造的函数
	char* message = (char*)alloca(sizeof(char) * length);
	message = getLogInformation();	//凭空捏造的函数
	std:cout << message << std::endl;
}

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/914879.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-16
下一篇2022-05-16

发表评论

登录后才能评论

评论列表(0条)

    保存