gpt4 book ai didi

C 程序在访问结构体字段的特定数组元素时崩溃

转载 作者:行者123 更新时间:2023-11-30 20:05:26 26 4
gpt4 key购买 nike

我有这个代码:

#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>

struct game_s {
bool isOccupied[20][10];
};

int main() {
struct game_s* game_p;
game_p->isOccupied[0][8] = false;
printf("0,8 works\n");
game_p->isOccupied[2][8] = false;
printf("2,8 works\n");
game_p->isOccupied[1][7] = false;
printf("1,7 works\n");
game_p->isOccupied[1][9] = false;
printf("1,9 works\n");
game_p->isOccupied[1][8] = false; // crashes the program
printf("1,8??");
}

从评论中可以看出,当我尝试访问数组的特定元素。 (更具体地说,Windows 告诉我“a.exe 已停止工作”以及附加信息。)如果我使用其他内容第二个维度小于 10 时,该元素将是另一个。如果我不使用结构,它就不会崩溃。如果我使用 int 而不是 bool,它不会崩溃。如果我创建结构体的变量而不是指针,那么它不会崩溃。

我正在使用 gcc 版本 4.5.2 在 Windows 上使用 gcc main.c 编译此文件。如果我使用 ideone,它会运行没有问题。

有人可以告诉我这是怎么回事吗?

<小时/>

Windows 提供的有关崩溃的其他信息:

Problem signature:
Problem Event Name: APPCRASH
Application Name: a.exe
Application Version: 0.0.0.0
Application Timestamp: 558f50c8
Fault Module Name: KERNELBASE.dll
Fault Module Version: 6.1.7600.17206
Fault Module Timestamp: 50e6605e
Exception Code: c0000005
Exception Offset: 00011bcd
OS Version: 6.1.7600.2.0.0.768.3
Locale ID: 1031
Additional Information 1: 0a9e
Additional Information 2: 0a9e372d3b4ad19135b953a78882e789
Additional Information 3: 0a9e
Additional Information 4: 0a9e372d3b4ad19135b953a78882e789

Read our privacy statement online:
http://go.microsoft.com/fwlink/?linkid=104288&clcid=0x0409

If the online privacy statement is not available, please read our privacy statement offline:
C:\Windows\system32\en-US\erofflps.txt

最佳答案

尝试类似的事情

struct game_s* game_p = malloc(sizeof(struct game_s));

这样就分配了内存

关于C 程序在访问结构体字段的特定数组元素时崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31095342/

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