C中结构的内存错误
Memory Error with structures in C
下面的代码删除了以后game.answer
的内容,我也想不通为什么。
这是结构:
typedef struct
{
int guesses, guessesAllowed;
char* answer;
char max;
} GameState;
这是我构建新结构的函数:
GameState makeGame(int guessesAllowed, int numOfPositions, char max,
int seed)
{
GameState game;
char answer[9];
answer[0] = '[=11=]';
game.guesses = 0;
game.guessesAllowed = guessesAllowed;
game.answer = answer;
game.max = max;
getAnswer(answer, numOfPositions, max, seed);
return game;
}
我认为它与不应该覆盖的内存有关?
你不能这样做:
game.answer = answer;
您在函数中将答案声明为数组。您不允许保留该地址并return它。
你的函数的内存和其中使用的变量,比如answer
会立即被重用和覆盖。
下面的代码删除了以后game.answer
的内容,我也想不通为什么。
这是结构:
typedef struct
{
int guesses, guessesAllowed;
char* answer;
char max;
} GameState;
这是我构建新结构的函数:
GameState makeGame(int guessesAllowed, int numOfPositions, char max,
int seed)
{
GameState game;
char answer[9];
answer[0] = '[=11=]';
game.guesses = 0;
game.guessesAllowed = guessesAllowed;
game.answer = answer;
game.max = max;
getAnswer(answer, numOfPositions, max, seed);
return game;
}
我认为它与不应该覆盖的内存有关?
你不能这样做:
game.answer = answer;
您在函数中将答案声明为数组。您不允许保留该地址并return它。
你的函数的内存和其中使用的变量,比如answer
会立即被重用和覆盖。