【发布时间】:2017-03-02 08:32:20
【问题描述】:
好的,以下返回字符串的方法可以正常工作:
char* SU(double V) {
static char Str[80];
// Do something
return Str;
}
printf("%s", SU(A));
但以下操作会静默失败,因为内存中的字符串空间在两个调用结束时是相同的:
printf("%s %s", SU(A), SU(B));
我怎样才能干净简单地做到这一点?我在看 alloca() 但我认为我不能返回分配给 alloca() 的字符串,可以吗?
【问题讨论】:
-
为什么不在调用站点分配 2 个缓冲区并将它们传递给
SU? -
函数可以分配内存并返回一个指向这个新分配的内存的指针。许多程序员不喜欢这种方法,因为他们认为将分配内存的函数作为释放它的函数是一种更安全的策略。
-
我正在查看 alloca() 但我认为我不能返回分配有 alloca() 的字符串,可以吗? 。不,你不能,但使用
malloc就可以了。
标签: c dynamic static allocation