
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;
}
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)