gpt4 book ai didi

c - 奇怪的代码行为?

转载 作者:行者123 更新时间:2023-12-02 07:53:06 24 4
gpt4 key购买 nike

我有一个 C 代码,其中有一个结构声明,其中声明了一个 int[576] 数组。

出于某种原因,我不得不从结构中删除这个数组,所以我用一个指针替换了这个数组作为 int *ptr;在代码的其他地方声明了一些相同类型的全局数组,并通过将全局数组分配给 this 指针来初始化 this 指针。因此,我不必从代码的其他部分更改访问此数组的方式。

但是当我在结构中声明数组时它工作正常/提供所需的输出,但是当我将它声明为结构中的指针并将全局数组分配给该指针时它提供垃圾输出,作为指针初始化。

所有这些代码都在 MS-VC 6.0/Windows setup/Intel-x86 上运行。

我试过下面的东西:

  1. 怀疑结构填充/对齐但无法获得任何线索?如果结构对齐可能是罪魁祸首,我该如何继续缩小范围并确认它?

  2. 我已确保在这两种情况下,数组都被初始化为一些默认值,例如在首次使用前为 0,而在初始化前未被使用。

  3. 我尝试为这个新声明的数组使用全局数组和基于 malloc 的内存。同样的结果,垃圾输出。

我怎样才能将问题归零?任何指示都会有所帮助。

最佳答案

您是否可能在结构字段的任何地方使用了 sizeofsizeof(int[576]) != sizeof(int*)

这应该是两者之间唯一可见的区别。

关于c - 奇怪的代码行为?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2551338/

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