1.每次使用malloc()开辟的空间的都要free()掉
2.同一个地址只能free一次
3.使用指针变量时注意free掉的的是地址空间,而不是删除该变量。
int *a=(int *)malloc(sizeof(int)*64); free(a);//刚刚malloc的空间被释放,但是在当前函数内int* a的生命周期仍然存在。
4.在循环内开辟空间很容易造成内存泄露,要把每次循环开辟的空间都要释放掉。
很多人都不把free当回事。认为只是开辟不大空间,程序就结束了,内存也就自动释放了。但可能会出现这种情况,你在一个函数1开辟了一个不大的空间没有free,但是在另外一个函数2多次调用函数1。注意:每次调用函数1开辟的空间在整个线程没结束之前都会一直存在。博主因为malloc()没free(),成功把自己电脑干死机三次。
当一个函数需要传入指针的时,最好在函数外就把该指针需要的空间开辟malloc出来。最好不要在函数里面为这个指针开辟空间。
这样会导致free的时候不知道在哪里free。
在函数外面malloc(),在函数外free();这对组合最好不要跨函数出现。