0

我为此搜索了 C 标准,但我没有找到有关该问题的任何信息。如果这是实现定义的,为什么像这样使用malloc总是安全的?

char *p = (char*) malloc(100);
if (p == NULL)
      return;

for (i=0; i<100; i++)
{
     p[i] = ........
}
4

1 回答 1

1

如果 malloc 无法分配内存,则返回 NULL。这就是为什么你可以这样测试。

NULL 在标准中被定义为空指针,并保证与指向任何对象或函数的指针进行比较。这是一个永远不能成为内存位置的地址。

指针仅指向内存位置。在 C 中,当您分配内存时,该内存的第一个字节始终是要指向的内容。知道内存从哪里开始,大小,你就可以知道它在哪里结束。

但是指针可以指向该数组中的任何位置。您可以设置 char * p_pointer = p + 1 或等效的 &p[1]; p_pointer[-1] 指向 p[0]。

于 2013-09-15T09:11:39.313 回答