#include <stdio.h> #include <stdlib.h> int main() { char* ptr0 = (char*)malloc(sizeof(10)); *(char**)(ptr0) = ptr0; //若去掉这行,则不crash。为啥? free(ptr0); return 0; }
你比比sizeof(10)和sizeof(char *)哪个大
你说的对,我这个crash是64位编译环境下发生的,sizeof(10)=4, sizeof(char*)=8,释放的和分配的不一致,所以crash。