【发布时间】:2021-05-04 17:32:21
【问题描述】:
我正在开发一个应用程序项目,以找出在德州扑克游戏中获胜的概率。
我的程序有以下 3 种数据类型。
typedef enum {
SPADES,
HEARTS,
DIAMONDS,
CLUBS,
NUM_SUITS
} suit_t;
struct card_tag {
unsigned value;
suit_t suit;
};
typedef struct card_tag card_t;
struct deck_tag {
card_t ** cards;
size_t n_cards;
};
typedef struct deck_tag deck_t;
我写了一个函数void shuffle(deck_t * d) 导致分段错误:
void shuffle(deck_t * d){
for (size_t i = d->n_cards-1; i >= 0; i--) {
size_t randNum = random() % n_cards;
card_t *temp = (d->cards+i);
(d->cards+i) = (d->cards+randNum);
(d->cards+randNum) = temp;
}
}
我的程序正在编译。但是在测试时,在洗牌的时候,它说:
Segmentation Fault (Core Dumped)
【问题讨论】:
-
随机产生的数字范围是多少?请显示您如何为卡片分配空间的代码。
-
你有一个核心转储。你应该分析一下。
-
我尝试分析它,但我不知道出了什么问题。
标签: c pointers segmentation-fault