访问C中的数组内的struct字段

时间:2017-11-10 18:58:30

标签: c arrays pointers struct sdl

我正在编写一个程序,它应该构建一个SDL_Rects数组。在for循环中,我将值分配给SDL_Rect的字段,并在每个以这种方式创建的矩形中指向一个指针数组。 这是我的代码:

SDL_Rect *rectangles[n];

for (i = 0; i <= n - 1; i++)
{
    SDL_Rect *rect = NULL;
    rect->w = random_int(min_size, max_size);
    rect->h = random_int(min_size, max_size);
    rectangles[i] = rect;
}

n,min_size和max_size都是从stdin读入的,这是random_int方法:

int random_int(int min, int max)
{
    return min + rand() % (max + 1 - min);
}

每次我尝试运行我的代码时,都会在for循环中抛出“Segmentation Fault:11”。 那是为什么?

1 个答案:

答案 0 :(得分:1)

rect中分配内存,否则它是未定义的行为。您基本上取消引用导致UB的NULL值。

SDL_Rect *rect;

rect = malloc(sizeof(SDL_Rect));
if( rect == NULL){
   fprintf(stderr,"%s","Error in malloc");
   exit(1);
}

..
..
free(rect);