为什么我会收到写访问冲突异常
Why am I getting a write access violation exception
我是 C 语言的新手,现在 运行 已经研究过这个问题两次了。
问题是我在尝试 运行 以下程序时收到访问冲突错误。 initialize_board()
函数中抛出异常。我在特定行上发表评论。
我们将不胜感激那些有更多经验的人的见解!
#include <stdio.h>
#include <stdlib.h>
/* global variables */
const int BOARD_SIZE = 3;
const char X = 'X';
const char O = 'O';
char** active_board;
//creates a square 2d array of size BOARD_SIZE
void create_board() {
//ptrs to array of chars
active_board = (char*)malloc(sizeof(char*)*BOARD_SIZE);
for (int i = 0; i < BOARD_SIZE; i++) {
active_board[i] = (char)malloc(sizeof(char) * BOARD_SIZE);
}
}
//fills board with either char X or O
void initialize_board(char symbol) { //symbol:= X or O
for (int i = 0; i < BOARD_SIZE; i++) {
for (int j = 0; j < BOARD_SIZE; j++) {
active_board[i][j] = symbol;// <---EXCEPTION THROWN HERE
}
}
}
int main() {
create_board();
initialize_board(X);
return 0;
}`
问题是那些转换
active_board = (char*)malloc(sizeof(char*)*BOARD_SIZE); /* Must return `char **` */
for (int i = 0; i < BOARD_SIZE; i++) {
active_board[i] = (char)malloc(sizeof(char) * BOARD_SIZE); /* Must return `char *` */
}
Don't cast malloc:
active_board = malloc(sizeof(char*)*BOARD_SIZE);
for (int i = 0; i < BOARD_SIZE; i++) {
active_board[i] = malloc(sizeof(char) * BOARD_SIZE);
}
我是 C 语言的新手,现在 运行 已经研究过这个问题两次了。
问题是我在尝试 运行 以下程序时收到访问冲突错误。 initialize_board()
函数中抛出异常。我在特定行上发表评论。
我们将不胜感激那些有更多经验的人的见解!
#include <stdio.h>
#include <stdlib.h>
/* global variables */
const int BOARD_SIZE = 3;
const char X = 'X';
const char O = 'O';
char** active_board;
//creates a square 2d array of size BOARD_SIZE
void create_board() {
//ptrs to array of chars
active_board = (char*)malloc(sizeof(char*)*BOARD_SIZE);
for (int i = 0; i < BOARD_SIZE; i++) {
active_board[i] = (char)malloc(sizeof(char) * BOARD_SIZE);
}
}
//fills board with either char X or O
void initialize_board(char symbol) { //symbol:= X or O
for (int i = 0; i < BOARD_SIZE; i++) {
for (int j = 0; j < BOARD_SIZE; j++) {
active_board[i][j] = symbol;// <---EXCEPTION THROWN HERE
}
}
}
int main() {
create_board();
initialize_board(X);
return 0;
}`
问题是那些转换
active_board = (char*)malloc(sizeof(char*)*BOARD_SIZE); /* Must return `char **` */
for (int i = 0; i < BOARD_SIZE; i++) {
active_board[i] = (char)malloc(sizeof(char) * BOARD_SIZE); /* Must return `char *` */
}
Don't cast malloc:
active_board = malloc(sizeof(char*)*BOARD_SIZE);
for (int i = 0; i < BOARD_SIZE; i++) {
active_board[i] = malloc(sizeof(char) * BOARD_SIZE);
}