挠弹记录

记一个唐诗UB

看如下两份代码:

har *big_multiply_fft(char *sa,char *sb){
    if (la<=0||lb<=0){
        char s[2]={'0','\0'};
        return s;
    }
}
har *big_multiply_fft(char *sa,char *sb){
    if (la<=0||lb<=0){
        char *s=malloc(2,1);
        strcpy(s,"0");
        return s;
    }
}

第一份代码中的字符数组为栈区结构,生命周期在函数结束后结束,因此此时的指针在函数结束后以没有任何意义,造成了指针悬空。

第二份代码 malloc 函数申请了堆区内存,在函数结束后仍有意义,指针也仍有意义。

posted @ 2025-12-30 23:36  Melting_Pot  阅读(5)  评论(0)    收藏  举报