gpt4 book ai didi

C - 使用 malloc 为结构赋值不起作用

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

我正在尝试使用分配的内存将值分配给结构,但我遇到了一些问题!我已经进行了 4 个月的编程,如果我犯了一个愚蠢的错误,我很抱歉,但这里是为了更好的变量名称而重写的代码,并消除了所有其他废话:

typdef struct mystruct {
double a, b;
int c, d;}
mystruct


// allocating an array to store a number of a, b, c and d values
mystruct * pointer = ((mystruct*)malloc((numFileLines * sizeof(mystruct))));

i = 0;
pointer[i].a = 2133;
pointer[i].b = 3424; .. and so on

这是我的问题..我认为这些没有被存储。有谁明白为什么不/我如何将这些值打印到控制台作为测试?

i++;
pointer[i].a = 2133;
pointer[i].b = 3424;

这给了我垃圾:(尝试打印第二个值)

printf("%lf", pointer[1].b);

如果有人可以提供帮助,或者如果您需要有关此问题的更多信息,我将每分钟刷新此页面!谢谢!

最佳答案

我想为什么当您尝试打印 pointer[1] 值时会得到垃圾值。
问题是您使用 malloc() 为指针(一个数组)分配内存。 malloc() 不保证内存分配是连续的。因此,当 i = 1 时,pointer[i] 不一定指向正确的内存位置。

所以我建议使用 calloc() 而不是 malloc()。 calloc() 确保内存是连续分配的,而不是随机分配的。

关于C - 使用 malloc 为结构赋值不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43823111/

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