首页 新闻 会员 周边

这段C代码为什么会crash?

0
悬赏园豆:5 [已解决问题] 解决于 2020-03-08 09:12
#include <stdio.h>
#include <stdlib.h>
int main() {
    char* ptr0 = (char*)malloc(sizeof(10));
    *(char**)(ptr0) = ptr0; //若去掉这行,则不crash。为啥?
    free(ptr0);

    return 0;
}
ChrisZZ的主页 ChrisZZ | 初学一级 | 园豆:27
提问于:2020-03-08 01:18
< >
分享
最佳答案
1

你比比sizeof(10)和sizeof(char *)哪个大

收获园豆:5
jakio6 | 小虾三级 |园豆:1318 | 2020-03-08 08:57

你说的对,我这个crash是64位编译环境下发生的,sizeof(10)=4, sizeof(char*)=8,释放的和分配的不一致,所以crash。

ChrisZZ | 园豆:27 (初学一级) | 2020-03-08 09:11
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册