首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

关于 free ,malloc,该如何处理

2012-05-07 
关于 free ,mallocC/C++ code#include stdio.h#include stdlib.h#include malloc.h#include string

关于 free ,malloc

C/C++ code
#include <stdio.h>#include <stdlib.h>#include <malloc.h>#include <string.h>int main(int argc, char *argv[]){  char* c =  malloc(3*sizeof(char*));  free(c);  return 0;}

对于这样一块代码,是分别移动到相应的位置调用3次 free,还是仅仅只调用一次就行。 
让我迷惑的是,我审请3个 char* , malloc返回的指针去是一个char*类型 ,如果返回的是 char*[3]之类的类型,还可理解 。


[解决办法]
free(地址);

没人在乎这个地址指向的是char还是char*还是char***********************************
[解决办法]
free(c)只是表示你用malloc分配的那块内存空间在free之后可以被重新利用了,如果不free的话,就相当于占着茅坑不拉屎,浪费资源了,都说malloc了不free,内存就会越用越少,那个内存是指可以被利用的内存,而不是值真正的内存减少了。
[解决办法]
你审请的是一个内存空间,它的长度是 3个 char* 的尺寸

char* c = malloc(3*sizeof(char*));
--〉char* c = (char*)malloc(3*sizeof(char*));

[解决办法]
malloc不管你的sizeof是什么东东,它只管这是个整数,我给你分配各内存块,然后返回的一律是void*,中间隐式类型转换成了char*。对于void*类型可以强制类型转换成任意类型的指针
(int*)malloc(100)
(char*)malloc(100)
(double*)malloc(100)等

热点排行