我在释放内存方面遇到了麻烦:
我得到的输出是这样的:
==11073== 1,000 bytes in 1 blocks are definitely lost in loss record 5 of 5
==11073== at 0x4A06A2E: malloc (vg_replace_malloc.c:270)
==11073== by 0x400B38: userInput (program.c:80)
==11073== by 0x400DFD: playGame (program.c:150)
==11073== by 0x4012E9: main (program.c:298)
Run Code Online (Sandbox Code Playgroud)
我使用的变量是在main之外定义的输入和答案:
char *answer;
char *input;
Run Code Online (Sandbox Code Playgroud)
我在main中使用的变量'answer'是这样的:
line 150 answer = userInput();
Run Code Online (Sandbox Code Playgroud)
功能是这样的:
char* userInput()
{
printf ("> ");
input = malloc (sizeof(char) * 1000); // THIS is LINE 80
fgets(input, 1000, stdin);
//input = realloc(input, strlen(input));
strtok(input, "\n");
int i = 0;
while (i < strlen(input))
{
input[i] = tolower(input[i]);
i++;
}
if (strcmp(input, "y") == 0 || strcmp(input, "yep") == 0 || strcmp(input, "yeah") == 0
|| strcmp(input, "absolutely") == 0 || strcmp(input, "correct") == 0)
input = "yes";
if (strcmp(input, "n") == 0 || strcmp(input, "nope") == 0)
input = "no";
return input;
}
Run Code Online (Sandbox Code Playgroud)
你在这里泄漏了内存:
input = "yes";
Run Code Online (Sandbox Code Playgroud)
和这里:
input = "no";
Run Code Online (Sandbox Code Playgroud)
input 现在指向一个字符串文字,它之前指向的内存丢失了.
| 归档时间: |
|
| 查看次数: |
80 次 |
| 最近记录: |