gpt4 book ai didi

c - C中使用malloc动态分配内存

转载 作者:行者123 更新时间:2023-12-02 09:23:35 24 4
gpt4 key购买 nike

使用malloc分配了50*sizeof(int)动态内存。正如我在某些文档中读到的,紧接着下面的元素应该是使用 malloc 分配的内存大小(在我的例子中是 200 字节)。但是当我执行下面的代码时,得到的是 209 而不是 200!

    #include<stdio.h>
#include<malloc.h>
int main()
{
int *p = (int *)malloc(sizeof(int)*50);

int i;

for(i = 0; i < 5; i++)
scanf("%d", &p[i]);

for(i = -1; i < 5; i++)
printf(" %d ", *((int *)(p+i)));
free(p);
}

有人可以帮忙解决问题吗?

最佳答案

问题出在第一次迭代中

for(i=-1;i<5;i++)
printf(" %d ",*((int *)(p+i)));

这里,索引-1引用无效的内存位置并尝试访问调用 undefined behavior .

FWIW,C 中的数组索引没有环绕,它是简单的指针算术,一旦您指向分配的内存区域之外,您就会点击 UB。

也就是说,

关于c - C中使用malloc动态分配内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39831183/

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