gpt4 book ai didi

c - 标准 C 是否真的指定指向对象的指针应包含该对象所包含的所有字节的最低地址?

转载 作者:行者123 更新时间:2023-11-30 15:45:48 24 4
gpt4 key购买 nike

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

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

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

最佳答案

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

NULL在标准中被定义为空指针,并且保证比较不相等指向任何对象或函数的指针。它是一个永远不可能成为内存位置的东西的地址。

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

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

关于c - 标准 C 是否真的指定指向对象的指针应包含该对象所包含的所有字节的最低地址?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18810415/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com