前提是这个指针使用malloc、realloc、calloc动态申请来的,当你不使用这个指针时,就释放掉,在什么地方释放都是可以的,关键是这个指针没有被修改过
创新互联建站长期为近1000家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为阜新企业提供专业的成都网站建设、做网站,阜新网站改版等技术服务。拥有十年丰富建站经验和众多成功案例,为您定制开发。
函数完成只释放局部变量本身占用的空间,如果变量是指针变量,则不会释放指针指向的空间
一时看不明白你的代码。一个原则是,start指向了谁。如果指向了在这个函数中定义的临时自动型数组,那必然存在返回局部数组指针的问题,就是你说的内存释放问题。这样虽然指针被返回了,但它指向的内容已经不受代码控制了,很危险。但如果start指向的是在主函数中声明的数组,或是全局或静态数组(这个函数中定义的静态数组也行),或者是用动态分配法获得的内存空间且未曾释放,则不存在任何问题,是完全合理合法的。用动态分配法时要注意在不用时释放内存空间,以免造成内存泄漏。
为了避免释放已经释放了内存的指针内存,或没有释放内存,在c语言中最好是在定义指针时赋初值NULL,释放后立即赋NULL,释放时检查指针值再决定释放就避免释放错误了,如:
int *a = NULL
int *b = (int*) malloc(sizeof(int) * 10);
int *c = NULL, *d = NULL;
c = b;
d = a;
/* 执行大量操作后 */
if(a != NULL) free(a);
if(b != NULL) free(b);
if(c != NULL) free(c);
if(d != NULL) free(d);
按照这样规定,即使代码再长,以及经过多次设计指针的函数调用,依然不会造成内存泄漏,或内存释放错误!