【发布时间】:2014-10-27 06:47:38
【问题描述】:
在C中做这样的事情有什么问题吗
char* wrap(char *inp) {
char *newstr;
newstr = (char *)malloc( sizeof(char) * 4);
newstr[0] = 'A';
newstr[1] = inp[0];
newstr[2] = 'B';
newstr[3] = '\0';
return newstr;
}
基本上我想知道在函数中使用 malloc 并返回局部变量是否有问题。
【问题讨论】:
-
不。请确保其他人致电
free()。 -
在设计使用动态内存的新代码时,我总是让调用者发送动态内存分配,而不是在子例程中进行。
-
如果您使用的是 Visual Studio,您必须确保对
malloc和free的调用在同一个 DLL 中。 MS 运行时库不喜欢在一个 DLL 中分配的内存在另一个 DLL 中释放。 -
char *newstr = malloc(4 * sizeof *newstr);
标签: c return malloc dynamic-memory-allocation