【c/c++】function returns address of local variable
2017-12-22 16:17
1051 查看
这个问题很普通,也很常见,例如下面的代码就会报这个错,原因在于:
s是局部变量,在栈上分配空间,当函数结束后会回收空间,这样s返回的内容无效。
解决方法是在堆上申请空间,然后返回,但是这样做需要注意释放空间。
s是局部变量,在栈上分配空间,当函数结束后会回收空间,这样s返回的内容无效。
解决方法是在堆上申请空间,然后返回,但是这样做需要注意释放空间。
char* func() { char s[100]; strcpy(s, "hello"); return s; } int main(int argc, char **argv) { puts(func()); return 0; }
char* func() { char *s = malloc(100); strcpy(s, "hello"); return s; } int main(int argc, char **argv) { puts(func()); return 0; }
相关文章推荐
- warning: function returns address of local variable
- C waring:function returns address of local variable 为什么两段代码运行结果完全不一样?
- warning: function returns address of local variable
- warning: function returns address of local variable
- returning address of local variable or temporary
- D:\vcfile\4.c(6) : warning C4172: returning address of local variable or temporary
- warning C4172: returning address of local variable or temporary
- address of local variable 'pbuf' returned
- Local declaration of 'XXX' hides instance variable
- Local declaration of 'XXX' hides instance variable
- [C++想当然]线程不安全的local static variable
- error C2601: ' ": local function definitions are illegal;fatal error C1075: end of file found before
- Number of 1 BitsWrite a function that takes an unsigned integer and returns the number of ’1' bits i
- C++: 为什么我们一般都要将函数的声明和定义分开?(separate the declaration of function from its definition)
- 'localtime': This function or variable may be unsafe. Consider using localtime_s instead. To disable
- c++对象模型-the sematics of function
- Passing address of non-local object to __autoreleasing parameter for write-back
- What kinds of iterators of C++'s copy function requires? What about reverse or unique?
- ptxas fatal : Cannot take address of function ‘_ZN8Material6SampleERK4RayRK8GVector3S5’
- Local declaration of 'XXX' hides instance variable