相关疑难解决方法(0)

在c中分配内存并保存字符串

我想知道为什么下面的代码不起作用

int main(int argc, char **argv)
{
     char *test = (char*) malloc(12*sizeof(char));
     test = "testingonly";
     free(test);
}
Run Code Online (Sandbox Code Playgroud)

在考虑之后,我的假设是首先在内存中为12个字符分配空间,但是下一行中的赋值在堆栈上创建一个char数组,并将其内存地址传递给test.所以free()尝试释放堆栈上不允许的空间.那是对的吗?

那么在堆上保存字符串的正确方法是什么?以下是一种常见的方式吗?

int main(int argc, char **argv)
{
     char *test = (char*) malloc(12*sizeof(char));
     strcpy(test, "testingonly");
     free(test);
}
Run Code Online (Sandbox Code Playgroud)

c string malloc free

22
推荐指数
3
解决办法
5万
查看次数

标签 统计

c ×1

free ×1

malloc ×1

string ×1