tom*_*mol 5 c memory pointers system-calls
我正在查看sbrk
系统调用的文档,发现这个:
成功时,
sbrk()
返回上一个程序中断.(如果中断增加,则此值是指向新分配的内存的开始的指针).出错,(void *) -1
返回,并errno
设置为ENOMEM
.
现在,
有什么意义(void *) -1
?
它指向的确切内存地址是什么?(如果确实如此)
如何保证(void *) -1
不是sbrk()
成功返回的有效地址?
(void *) -1 == (size_t) -1
Run Code Online (Sandbox Code Playgroud)
它0xFFFFFFFF
位于32位机器和0xFFFFFFFFFFFFFFFF
64位机器上,是一个无效的地址,应该比任何其他地址都大.