warning: function returns address of local variable
2014-10-23 16:47
309 查看
如下的简单程序,编译时候会报错:warning: function returnsaddress of local variable
原因: 函数中的局部变量存放在stack中,函数执行完成之后会自动释放,因此不应将局部变量的指针作为返回值。
可以使用下面的方法来解决这种问题。
这种情况下,分配的变量会被存放在文字常量区,不是临时变量,解决了前面的问题。
但注意,malloc手动分配的内存需要自己手动释放,记得再程序中调用free()。
也可以直接 return "This is a test."
#include #include char * get_str() { char str[512] = {'\0'}; strncpy(str, "This is a test.", strlen("This is a test")); return str; } int main(int argc, char *argv[]) { char *str = get_str(); printf("String is: %s\n", str); return 0; }
原因: 函数中的局部变量存放在stack中,函数执行完成之后会自动释放,因此不应将局部变量的指针作为返回值。
可以使用下面的方法来解决这种问题。
char * get_str() { char *str = (char *) malloc(512); memset(str, 0, 512); strncpy(str, "This is a test.", strlen("This is a test.")); return str; }
这种情况下,分配的变量会被存放在文字常量区,不是临时变量,解决了前面的问题。
但注意,malloc手动分配的内存需要自己手动释放,记得再程序中调用free()。
也可以直接 return "This is a test."
相关文章推荐
- warning: function returns address of local variable
- warning: function returns address of local variable
- 【c/c++】function returns address of local variable
- C waring:function returns address of local variable 为什么两段代码运行结果完全不一样?
- D:\vcfile\4.c(6) : warning C4172: returning address of local variable or temporary
- address of local variable 'pbuf' returned
- warning: local declaration of 'mapView' hides instance variable
- returning address of local variable or temporary
- warning C4172: returning address of local variable or temporary
- error C2601: ' ": local function definitions are illegal;fatal error C1075: end of file found before
- gcc下编译出现warning:implicit declaration of function 'strdup'和warning:implicit declaration of function 'gethostname'
- Local declaration of 'XXX' hides instance variable
- Local declaration of 'XXX' hides instance variable
- warning: implicit declaration of function导致core
- Local declaration of tableview hides instance variable 警告
- 'localtime': This function or variable may be unsafe. Consider using localtime_s instead. To disable
- ORA-24347: Warning of a NULL column in an aggregate function
- warning incompatible implicit declaration of built-in function 'printf'
- warning: control reaches end of non-void function:错误解决
- Number of 1 BitsWrite a function that takes an unsigned integer and returns the number of ’1' bits i