这个malloc这一项为什么sizeof是4哇


 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咯

你这两个是一样的么

img


而且,malloc是分配一块连续的空间(n个单位),但是你这个指针变量只指向这个空间的一个单位(后面的单位(p+1),(p+2)...)
那你这个指针变量就应该只是一个单位的大小