所以,我有一些函数返回指针,或NULL出错.现在我想为不同的错误/条件添加另一个可能的值.我之前在其他一些答案中听到过这种情况 - 使用malloc()创建一个唯一的指针,它将作为这些函数返回的可能值(所以现在可以返回一个正确的指针,NULL或者0xWhatever你可以肯定0xWhatever不会用于还要别的吗).所以,自然malloc(1)可能是一个安全的赌注,但我想知道这是否malloc(0)也是安全的.将一个malloc(0)地址可能会被用于其他的东西?有人可以澄清一下这种技术应该如何运作,也许它的名称是什么?
从C99标准:
如果请求的空间大小为零,则行为是实现定义的:返回空指针,或者行为就像大小是非零值一样,但返回的指针不应用于访问对象.
你最好不要使用malloc(1).如果内存可用,则保证返回非NULL.