返回本地变量的地址是危险的

//返回本地变量的地址是危险的,本地变量结束后地址会重新分配给其他地方使用
//返回全局变量或静态本地变量的地址是安全的的
//返回在函数内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
-----------------------------------*/


//不要使用全局变量来在函数间传递参数和结果
//尽量避免使用全局变量
//丰田汽车的案子
//使用全局变量和静态本地变量的函数是线程不安全的

posted @   江南王小帅  阅读(70)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示