【问题标题】:C - Segmentation Fault Assigning value to Array of StructC - 将值分配给结构数组的分段错误
【发布时间】:2021-06-24 09:49:11
【问题描述】:

每当我这样做时,我都会遇到分段错误。我想知道是否有一种方法可以让我为结构分配值而不会出现 SegFault?

typedef struct _chunk
{
  int lo;       // lower bound
  int hi;       // higher bound
} chunk;

chunk_stack = (chunk **)malloc(10 * 10 * sizeof(chunk **));

for (i = 0; i < chunk_per_thread; i++)
{
   chunk_stack[myid][i].lo = 0;
   chunk_stack[myid][i].hi = 1;
}

【问题讨论】:

标签: c multidimensional-array struct segmentation-fault


【解决方案1】:

假设您需要分配一个大小为 r * c 的二维数组。
您需要首先为您所做的双指针分配内存,但其中有一个错误,即 malloc 函数内有一个额外的 *。

chunk **chunk_stack = (chunk **)malloc(r * sizeof(chunk *));

那么你需要为每一行分别分配内存。

for(int i = 0; i < r; i++){
    chunk_stack[i] = (chunk*)malloc(c * sizeof(chunk));
}

【讨论】:

  • 正确但不建议在 C 中强制转换指针。请参阅:stackoverflow.com/a/17260868/3808573。最好写chunk **chunk_stack = malloc(r * sizeof(chunk *));chunk_stack[i] = malloc(c * sizeof(chunk));
  • @ssd 谢谢。我不知道。
猜你喜欢
  • 2021-07-23
  • 2011-05-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-08
相关资源
最近更新 更多