我有以下代码

#include<stdio.h>
int main () {
        void *result[20];
        void *endptr;
        void *x;
        for (i = 0; i < 20; i++) {
                result[i] = malloc(10);
                printf("111 : %d\n",result[i]);
        }
        endptr= sbrk(0);
        printf("\n222 : %d\n",endptr);
        x = malloc(60); ----------- error
        return 0;
}

我想打印所有空指针的数值和sbrk函数调用form malloc的次数?
如果我在printf语句中打印*endptr,它会给我错误。目前我认为它会打印分配内存的地址。%x只需将当前值转换为十六进制并打印就行了?
x=malloc(60)也给出了错误:void值不应该被忽略
我该怎么做?
谢谢

最佳答案

sbrk(0)返回“program break”的当前大小,它实际上不是指针,因此取消对它的引用将产生错误。
http://en.wikipedia.org/wiki/Sbrk
http://pubs.opengroup.org/onlinepubs/007908799/xsh/brk.html

关于c - sbrk和malloc在C,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23091416/

10-11 22:06