gpt4 book ai didi

c - 没有使用malloc分配内存,如何?

转载 作者:行者123 更新时间:2023-11-30 18:16:37 26 4
gpt4 key购买 nike

下面是一个简单的代码片段:

int main()
{
int *p;
p=(int*)malloc(sizeof(int));//allocate m/y 4 1 int
printf("P=%p\tQ=%p",p,p+2);
}

在一个示例运行中,它给出了如下输出:

P=0x8210008 Q=0x8210010

P的起始地址是-P=0x8210008,下一个字节是0x8210009,下一个字节是0x821000A,下一个字节是0x821000B。所以int的4个字节到此结束。我们没有使用 malloc 分配更多内存。那么p+2是如何引导我们到0x8210010的,即P(0x8210008)之后的8个字节。

最佳答案

因为它将其视为距指针的整数元素偏移量。您已为单个整数分配了一个数组。当您要求 p+2 时,它与 &p[2] 相同。如果您想要从开头开始两个字节,则需要先将其转换为 char*:

char *highWordAddr = (char*)p + 2;

关于c - 没有使用malloc分配内存,如何?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11732862/

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