返回本地变量的地址是危险的
//返回本地变量的地址是危险的,本地变量结束后地址会重新分配给其他地方使用
//返回全局变量或静态本地变量的地址是安全的的
//返回在函数内malloc的内存是安全的的,但是容易造成问题
//最好的做法是返回传入的指针
#pragma warning(disable : 4996)
#include <iostream>
#include<stdio.h>
int *f(void);
int *g(void);
int main() {
int *p = f();
printf("*p = %d\n", *p);
g();
printf("*p = %d\n", *p);
return 0;
}
int *f(void) {
int i = 123;
printf("i = %d\n", i);
printf("&i = %p\n", &i);
return &i;
}
int *g(void) {
int k = 78;
printf("k = %d\n", k);
printf("&k = %p\n", &k);
return &k;
}
/*------------------------------
i = 123
&i = 001FFD60
*p = 123
k = 78
&k = 001FFD60
*p = 78
-----------------------------------*/
//不要使用全局变量来在函数间传递参数和结果
//尽量避免使用全局变量
//丰田汽车的案子
//使用全局变量和静态本地变量的函数是线程不安全的

浙公网安备 33010602011771号