【发布时间】:2018-02-08 00:26:05
【问题描述】:
我想我这里有一些内存泄漏。
也许有人可以告诉我在这种情况下如何处理泄漏的正确方法。
#include <stdio.h>
#include <stdlib.h>
struct adresse {
char *name;
int nummer;
};
int main() {
int size = 2;
struct adresse *a = (struct adresse *) malloc(sizeof(struct adresse) * size);
for (int i = 0; i < size; i++) {
a[i].name = "Testname";
a[i].nummer = 123;
}
for (int i = 0; i < size; i++) {
printf("%s, %d\n", a[i].name, a[i].nummer);
}
free(a);
return 0;
}
【问题讨论】:
-
为什么你认为这里有内存泄漏?
-
为什么你认为你有内存泄漏?我看到的唯一问题是您没有检查
malloc返回NULL。除此之外,代码看起来还可以。 -
@immibis 可能是因为结构中的字符
-
你不能
free"Testname" 因为它是一个字符串文字。struct成员只包含一个指针。 -
打扰一下,但健壮的代码应该检查所有函数的返回值,为您的利益提供。
NULL这里的意思是没有可用的内存。