1 #include
2 #include
3 #include
4
5 struct test
6 {
7 char *str;
8 };
9
10 int main(void)
11 {
12 struct test *ptest = NULL;
13
14 ptest = malloc(sizeof(struct test));
15 if(NULL == ptest)
16 {
17 fprintf(stderr, "main: malloc error\n");
18 exit(EXIT_FAILURE);
19 }
20
21 ptest->str = strdup("hello world"); /* strdup()函数调用了malloc()函数 */
22
23 // free(ptest->str);
24 free(ptest); /* 只释放了ptest指向的空间 */
25
26 return EXIT_SUCCESS;
27 }
如果此时程序的23行被注释的话,会造成ptest->str所指向的内存空间泄漏。
所以在释放内存空间时,要清楚各个指针所指向的空间是什么。因为free(p)函数只释放p所指向的空间而已。
阅读(1286) | 评论(0) | 转发(0) |