gpt4 book ai didi

c - Malloc 在为整数分配空间时表现异常

转载 作者:太空宇宙 更新时间:2023-11-04 01:30:40 26 4
gpt4 key购买 nike

可能我只是不了解 malloc 的工作原理,但我没有看到我的代码有错误:

int amount_integers = 2;
int *pointer_to_allocated_memory = (int*)malloc(amount_integers * sizeof(int));
for (int i = 0; i < amount_integers; i++)
{
int *address = &(pointer_to_allocated_memory)[i * sizeof(int)];
*(address) = 0;
}

我想为任意数量的整数初始化内存(amount_integers 可能不是 2)。但是,第 2 行中的 malloc 似乎运行不正常。 MSVC 的调试器将在此时中断(没有定义断点)。在继续的时候,当i为1时,会在第6行(*(address) = 0;)遇到访问写冲突。

我认为我正在访问的内容:

    v pointer_to_allocated_memory[0 * sizeof(int)]
... | sizeof(int) | sizeof(int) |
^ pointer_to_allocated_memory[1 * sizeof(int)]

这些应该被分配。为什么应用程序会崩溃?

最佳答案

数组索引不是索引字节而是数组元素,在你的例子中是整数:

       int *address = &(pointer_to_allocated_memory)[i];

i 的有效值为 0 和 1

关于c - Malloc 在为整数分配空间时表现异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23030506/

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