gpt4 book ai didi

c - 当用 1 个元素声明数组时如何动态分配内存

转载 作者:可可西里 更新时间:2023-11-01 10:45:49 25 4
gpt4 key购买 nike

考虑如下结构:

typedef 结构 {
整数计数;
诠释 [1];
} SampleStruct, *PSampleStruct;

我知道 arr 是一个 int 数组,需要在运行时动态分配内存,而 arrCount 需要保存元素的计数。但是,当我尝试使用 malloc 分配内存时,比如 10 个元素,编译器会抛出错误,提示 arr must be a modifiable value。我不知道如何为这样的数组分配内存。此外,我在很多 Windows header 中都看到过这样的示例,但是当我尝试实现它时,我完全迷失了。

最佳答案

arr[1] 不是指针,PSampleStruct 是。你会做这样的事情:

PSampleStruct ss10arr = malloc(sizeof (*ss10arr) + (sizeof(ss10arr->arr) * 9)) 这将使 arr[0] 通过 arr[9] 有效。

请注意,这仅适用于 arr 位于结构的末尾

另请注意,如果您尝试访问后续元素,某些编译器选项(如 glibc 和 gcc 的 -D_FORTIFY_SOURCE)会报错,因为它会将此检测为超限。

关于c - 当用 1 个元素声明数组时如何动态分配内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26443036/

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