c - 尝试找出在为数组分配的堆内存中分配值期间的错误

标签 c malloc allocation

我试图找出为什么当我向堆分配内存中的结构数组中的结构分配值时出现错误。

我有以下 C 结构:

typedef struct _Point{
int x;
int y;
 }Point;

和一个 Point 数组:

typedef Point Sample[];

现在我想分配一个 Sample 数组,任何 Sample 都由 15 个点组成,我使用以下代码:

Sample *new_positions;
data.old_positions =(Sample*) malloc(sizeof(Point) * 15 * global.nsamples);

当我尝试将其与以下代码一起使用以分配值时,出现错误

data.old_positions[0][0].x=5;

问题出在哪里? :(

最佳答案

data.old_positions 只是单一维度 -

 data.old_positions[0].x=5;

指定 Zeroith 项目。模拟二维​​比构建二维数组更好。

 data.old_positions[0 * 15 + 0].x = 5;

(Sample *)malloc(... 有效地构造一个没有内容的一维数组。您将需要 malloc 第二个维度...

 data.old_positions = (Sample *)malloc(sizeof(Sample) * global.nsamples)
 for (int i = 0; i < global.nsamples; i++) 
     data.old_positions[i] = (Point*)malloc(sizeof(Point) * 15);

应该可以了。

关于c - 尝试找出在为数组分配的堆内存中分配值期间的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10935336/

相关文章:

c - 如何在c中使用struct获取动态数组

c - x86 内联汇编标志

c++ - new 似乎没有办法增加或缩小分配?

c++ - 堆栈分配功能(性能)

c - 在 C 中的结构内定义结构数组

C 使用 sprintf 将数组转换为字符串

c++ - 设置和取消设置 64 位整数中的特定位

C:尝试释放节点时出现 SegFault 错误

c - 链表中指针指针的奇怪行为

c - 包装 malloc - C