A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

基本变量,字符,数字,字符串,数组:定义时可以不初始化,但不初始化会引起不必要的错误,如int a; 如不初始化,系统会将之前没有释放的内存与a组合,输出看到的是很大的数据,有没有,那有没有办法将系统之前没有释放的内存先释放下,毕竟这种没有释放的内存太影响运行?
特殊变量,指针:定义时,可以不初始化,但是不是说如果指针不指向内存地址的话,就会释放吗?怎么理解C中只定义指针变量却不初始化的问题?

8 个回复

倒序浏览
脑中OC与C越来越混乱。。。。有没有整理过这方面的
回复 使用道具 举报
OC的变量并不是没有引用就会自动释放,自动释放那是Java的垃圾回收机制。
OC的变量都有自己的一个计数器,只有计数器为0时,系统才会自动调用dealloc方法来释放内存。
回复 使用道具 举报
至于你说的声明变量同时必须初始化不然垃圾数据的问题。
你可以自己尝试一下,你声明一个NSString 只进行alloc操作, 你看看你可以运行?
回复 使用道具 举报
目前的疑惑都是在了解了OC再强化整理C时出现的,其中关于指针是C中定义如 char *p; 就可以一直用,而OC上要init才行

这两种机制要怎么理解?
回复 使用道具 举报
围观学习啦,大家加油!!!
回复 使用道具 举报
指针指定义不初始化就是野指针,会有问题的!
回复 使用道具 举报
tabor 中级黑马 2015-6-21 00:06:57
8#
看来是C可以用只定义不用初始化的指针,而OC的指针一定要初始化。两种语言各用好处!
回复 使用道具 举报

围观学习啦,大家加油!!!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马