char str[] = "world"; cout << sizeof(str) << ": ";//6
char *p = str; cout << sizeof(p) << ": ";//4
char i = 10; cout << sizeof(i) << ": ";//1
void *pp = malloc(10); cout << sizeof(p) << endl;//4
void *pp = malloc(10); cout << sizeof(p) << endl;//4为什么是4
因为p是int 是个地址数
因为你的环境是32位的, sizeof(p)返回的是指针p占用的内存空间, 虽然你的p指向一块10字节的内存空间, 但是p本身的地址是32位的, 那就是4咯
你这两个是一样的么