扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
全局数组在程序运行结束时自动释放。
企业建站必须是能够以充分展现企业形象为主要目的,是企业文化与产品对外扩展宣传的重要窗口,一个合格的网站不仅仅能为公司带来巨大的互联网上的收集和信息发布平台,成都创新互联公司面向各种领域:成都玻璃隔断等成都网站设计、成都全网营销推广解决方案、网站设计等建站排名服务。
函数内定义的数组在函数退出时自动释放。
C/C++没有提供人为释放办法。
在实际使用中,是没有错误的。因为,任何指针都是一样的(就是个内存地址,只是因为地址中存储的数据类型不同,指针的类型不同)
编译器,在编译时,会检查函数参数类型与调用类型是否相同,如果不同,则会报错误或是警告,这在不同的编译器上表现不一样。
一般在写代码时,严格来说,调用函数时的实参一定要与实参类型相一致,否则,有可能会出错误。
综上,如果不想看到编译警告,则应该在调用时,加上强制转换,就可以了。(向编译器表明,我知道不同,但就是想这样用),如:
int **intPtr ;
....
FreeArray2( 10, (void**) intPtr );
#include
#include
int
main()
{
char
a[5];
gets(a);
//你这个代码是我的电脑上运行是错误的
free(a+2);//a+5不属于a的,a的范围是a[0]到a[4],而且这个free是对于指针的,你对这种是没有用的,a+2是常量,a也是常量,是地址常量.不能用free的
printf("%s",a);
//system("pause");
getchar();
return
0;
}
你提问中定义方式是在函数完成前释放不了的,你定义的字符数组,放在stack空间,不能用free()试图释放堆中的内容,因为那里是一段程序运行的保证。
只有使用malloc()在栈空间开辟的动态内存才能被释放!
如果你后面的代码想继续用这个数组名的话,这个数组还是可以重新赋值。你可以把你用到的数据独到这个变量中就行了!
你定义的anto数组在函数完成后,系统自己就回收了!
line数组会在函数执行结束后释放,因为它属于函数里的局部变量。
所谓的释放不是说这个数组已经消失得无影无踪,而是说它现在所占据的空间可以由其他数据再次使用(即覆盖),我们不要再去访问这个line数组了,因为它的内容随时可变。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流