当我尝试在程序结束时释放内存时,我遇到了问题。它一直在打破。你能告诉我问题在哪里吗?
int main() {
char* word = NULL;
int i = 0;
char str1[12] = "oko";
while (str1[i]) {
str1[i] = tolower(str1[i]);
i++;
}
printf("%s", str1);
word = (char *)malloc(strlen(str1) + 1);
word = str1;
printf("%s", word);
free(word);
system("pause");
return 0;
}
答案 0 :(得分:7)
在您的代码中,通过说
word = str1;
malloc()
- ed指针稍后,通过free()
上的word
调用,您将重新调用undefined behavior,因为malloc()
或函数系列不再返回指针。
解决方案:您应该使用strcpy()
复制字符串的内容。
那就是说,
malloc()
and family in C
.。int main()
至少应为int main(void)
,以符合标准。