【发布时间】:2016-11-15 03:51:09
【问题描述】:
返回一个在函数内部声明的指针是否被认为是不好的做法?示例:
int* foo(void)
{
int * ret_val = 1234;
return ret_val;
}
我相信你应该使用:
static int * ret_val = 1234;
但是话说回来,在你的范围之外返回内存是否仍然被认为是不好的做法?
【问题讨论】:
-
你没有分配任何内存返回!!所以这是一个不好的做法。但是,如果您使用
malloc()来分配内存,那么由于malloced 内存可以在函数调用之间使用,那么这不是一个坏习惯。 -
*ret_val = 1234;本身就很糟糕。至于你的问题,如果你不使用new,那么它就是stackoverflow.com/questions/6441218/…的欺骗 -
是的,返回动态分配的对象是一种不好的做法,因为跟踪可能的内存泄漏更加困难
-
如果这(返回分配的内存,而不是分配失败)是不好的做法,那么
malloc将是最严重的违规者。 -
您应该选择一种语言,因为在
C中的良好做法在C++中可能是坏做法。两种截然不同的语言。