【发布时间】:2018-01-17 23:54:54
【问题描述】:
我有一个可用的 C 代码。它连接 2 个字符数组并打印出解决方案。
但是我这里有一个动态内存管理(malloc),现在必须释放它。
谁能告诉我在哪里免费?为什么?
char * stringcat(const char * str1, const char * str2) {
int length_1 = strlength(str1);
int length_2 = strlength(str2);
int length = length_1 + length_2 + 1;
char * newstr = malloc(sizeof(char) * length);
for(int i=0; i < length; i++)
{
char charToCopy = '\0';
if(i < length_1)
{
charToCopy = *(str1 + i);
} else if(i < (length_1 + length_2)) {
charToCopy = *(str2 + i - length_1);
}
*(newstr + i) = charToCopy;
}
return newstr;
}
int strlength(char *c) {
int count = 0;
while(*(c + count) != '\0') {
count++;
}
return count;
}
int main() {
char surname[] = "Simon";
char lastname[] = "Arndt";
printf("%s\n", stringcat(surname, lastname));
return 0;
}
【问题讨论】:
-
free内存,当你不再需要它时......就这么简单 -
请使用tour 并阅读How to Ask。在这些搜索结果中可能已经存在这个问题的答案:stackoverflow.com/search?q=%5Bc%5Dwhere+to+free