关于 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)等