某些时候,我们需要将指针赋值为空指针,以防止野指针。 有人喜欢使用NULL作为空指针常量使用,例如:int* p = NULL;。 也有人直接使用0值作为空指针常量,例如:int* p = 0;。 前者可能觉得:NULL作为空指针常量,名字很形象,可读性较强。 后者可能觉得:NULL并不是C/C++ ...
分类:
编程语言 时间:
2016-06-08 14:04:43
阅读次数:
238
当你发现你的项目中什么没有写,只是启动App内存就飙升到50M甚至60M以上,那么请你接着往下看吧,本文对你绝对非常有用! 1. Enable zombie object: 为了方便我们调试程序,我们一般会勾选第一项。这样的话,在我们程序中当调用了野指针的时候,在你打上全局断点的情况下,程序会定位在 ...
分类:
移动开发 时间:
2016-05-31 20:42:20
阅读次数:
254
iOS内存管理方式: ARC Automatic Reference Counting 自动引用计数 MRC Manual Reference Counting 手动引用计数 更改管理方式: 内存管理的问题: 1、内存泄露:不再需要的对象没有释放。 2、野指针:正在使用的对象提前释放。 引用计数: ...
分类:
移动开发 时间:
2016-05-13 14:06:54
阅读次数:
213
什么是Address Sanitizer?
AddressSanitizer is a fast memory error detector. It consists of a compiler instrumentation module and a run-time library. The tool can detect the following types of bugs:
Out-...
分类:
其他好文 时间:
2016-05-07 08:36:29
阅读次数:
152
转自:http://www.cnblogs.com/viviwind/archive/2012/08/14/2638810.html 先看一个例子: 这是很多人都容易犯的错误:定义了结构体变量stu,但结构体内部的char * name在定义结构体时只是为其分配了4字节的内存,没有指向一个合法的地址 ...
分类:
其他好文 时间:
2016-04-30 22:24:41
阅读次数:
193
智能指针就是智能/自动化的管理指针所指向的动态资源的释放#include<iostream>#include<cstdlib>usingnamespacestd;//****************资源转移******************//最好不要使用,会因为释放野指针造成程序奔溃template<typenameT>classAutoPtr{public:Auto..
分类:
其他好文 时间:
2016-04-27 19:02:46
阅读次数:
209
@autoreleasepool { stu * s=[[[stu allow]init] autorelease];//可以不用release 自动释放会自动销毁 stu * s=[[[stu allow]init] autorelease]autorelease];错误不可以写两次 野指针错误 ...
分类:
其他好文 时间:
2016-04-24 17:02:04
阅读次数:
132
1 指针的使用
1.1 问题
写一个程序,回顾指针的基本应用,然后测试空指针和野指针,再加上条件判断进行避免。
1.2 步骤
实现此案例需要按照如下步骤进行。
步骤一:指针的使用
代码如下所示:
#include stdio.h>void swap(int *a, int *b){ int tmp = *a; *a = *b; *...
分类:
编程语言 时间:
2016-04-22 20:41:43
阅读次数:
198
1.堆空间里的内存是系统自己管理与回收,栈区的数据一般不用自己去管,系统会自动回收
1>每个OC对象内部有4个字节的存储空间来存储引用计数器
2>main函数有一个循环
3>retain 调用返回对象本身
4>野指针和空指针:指向不可用内存的指针的指针是野指针
5>EXC_BAD_ACCESS:访问了一块坏的内存(已经被回收,已经不可用的内存)
p = ni...
分类:
其他好文 时间:
2016-04-22 20:32:33
阅读次数:
221