realloc不是changíng数组的大小

Luk*_*sik 4 c arrays realloc

可能重复:
Realloc没有调整指针数组的大小

谁能告诉我我的错误在哪里?这个函数应该提供从中提供的字符数组stdin.我读了一些相关的问题,但这对我来说太复杂了.

char *readChar(void)
{
    int c;
    int len = 0;
    char* parr = malloc(sizeof(char));

    while((c = getchar()) != EOF)
    {
        ++len;
        int size = sizeof(char)*len;
        parr = (char *) realloc(parr,size);
        *(parr+size-1) = (char) c;
        printf("Done! Size should be: %dB, but real size is %dB\n",size,sizeof(parr));
    }

    return parr;
}
Run Code Online (Sandbox Code Playgroud)

输出:

完成!尺寸应为:1B,但实际尺寸为8B完成!尺寸应为:2B,但实际尺寸为8B完成!尺寸应为:3B,但实际尺寸为8B完成!尺寸应为:4B,但实际尺寸为8B

Mik*_*ike 7

错误是sizeof()不会告诉您分配的字节数.它告诉你的大小char *

听起来你想要的是验证你分配了正确的内存量.sizeof()不会给你这些信息.在这一点上,它处于低级别的细节中,您需要做一些依赖于OS的东西来尝试找到这些信息.(例如在Linux内核中,如果你有kmalloc()内存,你可以用来ksize()确切地知道你得到了多少字节)