挠弹记录
记一个唐诗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 函数申请了堆区内存,在函数结束后仍有意义,指针也仍有意义。

浙公网安备 33010602011771号