C - 将值分配给结构数组的分段错误
C - Segmentation Fault Assigning value to Array of Struct
每当我这样做时,我都会遇到分段错误。我想知道是否有一种方法可以在不出现 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;
}
假设您需要分配一个大小为 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));
}
每当我这样做时,我都会遇到分段错误。我想知道是否有一种方法可以在不出现 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;
}
假设您需要分配一个大小为 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));
}