malloc返回负值

1 c

我在硬件上运行这段代码.

unsigned char *buf;

buf = malloc(sizeof(int));
printf("Address of buf %d\n" , &buf);

if(!buf)
    return MEMORYALLOC_FAILURE;
Run Code Online (Sandbox Code Playgroud)

malloc将返回负值.可能是什么问题呢?

MBy*_*ByD 10

malloc返回的地址不是负数或正数,它只是地址,使用%p来打印它,而不是%d:

printf("Address of buf %p\n" , &buf);
Run Code Online (Sandbox Code Playgroud)

如果要打印从malloc返回的地址,请删除&符号:

printf("Address of buf %p\n" , buf);
Run Code Online (Sandbox Code Playgroud)