安全delete,添加refenerce,release
#ifndef SAFE_ADDREF
#define SAFE_ADDREF(p)    if (p != NULL) { p->AddRef(); }
#endif
#ifndef SAFE_RELEASE
#define SAFE_RELEASE(p)    if (p != NULL) { p->Release(); p = NULL; }
#endif
#define SAFE_DELETE(x)                {if ((x)!=NULL) {delete (x); (x)=NULL;}}
#define SAFE_DELETEBUFF(x)            {if((x)!=NULL) {delete [] (x); (x) = NULL;}}
#define SAFE_FREE(x) {if((x)!=NULL) {free(x); (x) = NULL;}}
int *b = new int[4];
    b[0] = 1;
    b[1] = 2;
    b[2] = 3;
    b[3] = 4;
    b[4] = '\0';
delete[] b;
b = NULL
char *array = (char*) malloc(sizeof(char) * 5);
    array[0] = 'a';
    array[1] = 'b';
    array[2] = 'c';
    array[3] = 'd';
    array[4] = '\0';
free(array);
    array = NULL;
安全delete,添加refenerce,release的更多相关文章
- 对cocos2d 之autorelease\ratain\release的理解
		
前言: 三种情况,引出问题 new出来的对象需要释放,而释放时,如果有其他人引用了这个对象,再次使用这个对象时,则会导致无效指针报错. 于是有了引用计数的施放管理机制. 对 ...
 - GridView 服务端控件添加 js
		
针对服务端控件的 CommandField “Delete” 添加 js $("#GridView1").find("a").each( function() ...
 - DNS添加/修改/查询/删除A记录
		
#查询DNS可用类 Get-WmiObject -Namespace root\MicrosoftDNS -List #查询所有资源记录 $mydns = [WMIClass]"ROOT\M ...
 - 产品打包工具的制作,ant,编译源码,打jar包,打tag,打war包,备份release版本等
		
1. 在进行打包工具的制作前,需要准备的软件有: svnant-1.3.1 作用是让ant和svn相关联 apache-ant-1.9.7 需要设置ant_home,path,我的配置是: ANT_ ...
 - stark组件之delete按钮、filter过滤
		
1.构建批量删除按钮 2.filter过滤 3.总结+coding代码 1.构建批量删除按钮 1.admin中每个页面默认都有 2.stark之构建批量删除 3.coding {% extends ' ...
 - 【转】对cocos2d 之autorelease\ratain\release的理解
		
原文链接:http://blog.sina.com.cn/s/blog_4057ab6201018y4y.html Objective C内存管理进阶(二):理解autorelease: http:/ ...
 - boke练习: springboot整合springSecurity出现的问题,post,delete,put无法使用
		
springboot 与 SpringSecurity整合后,为了防御csrf攻击,只有GET|OPTIONS|HEAD|TRACE|CONNECTION可以通过. 其他方法请求时,需要有token ...
 - 11 stark组件之delete按钮、filter过滤
		
1.构建批量删除按钮 1.admin中每个页面默认都有 2.stark之构建批量删除 3.coding {% extends 'base.html' %} {% block title %} < ...
 - 添加tag
		
创建tag git tag -a V1 -m 'release 1' 创建了本地一个版本v1,同时添加注释 release 1 查看tag git tag 显示注释 git show V1 本地tag ...
 
随机推荐
- mysql show processlist 显示mysql查询进程
			
1.进入mysql/bin目录下输入mysqladmin processlist; 2.启动mysql,输入show processlist; 如果有 SUPER 权限,则可以看到全部的线程,否则,只 ...
 - Cloudcraft: 云架构图形可视化(智能AWS图表)
			
Cloudcraft: 云架构图形可视化(智能AWS图表) 2016.09.11 官方网站: https://cloudcraft.co/ Cloudcraft是一个Web应用,用图形表示各种AWS服 ...
 - NSSpeechSynthesizer 文字变语音
			
NSSpeechSynthesizer 是AVFoundation中的一个类,这个类可以方便的在Cocoa应用程序中添加"文本到语言"功能.开发者可以使用这个类向iOS 引用程序中 ...
 - Javascript中setTimeout和setInterval的区别和使用
			
在javascript中,window对象有两个主要的定时方法,分别是setTimeout 和 setInterval,其语法基本上相同,但是完成的功能取有区别. setTimeout方法是定时程序, ...
 - python制作安装包(setup.py)
			
1.制作setup.py from distutils.core import setup setup(name='Myblog', version='1.0', description='My Bl ...
 - Ubuntu Vim YouCompleteMe 安装
			
0. 必要工具安装 sudo apt-get install build-essential cmake 1. 安装 vundle mkdir ~/.vim/bundle git clone http ...
 - iOS 浅复制、深复制、完全复制的知识点梳理验证(附加归档解档)
			
在之前转载的一片文章中,文中对浅复制和深复制进行了详细的解读,同时还提到了深复制(one-level-deep copy).完全复制(true copy)的概念,并指出iOS开发中的深复制是单层深赋值 ...
 - Unity3d Shader开发(三)Pass(Texturing )
			
纹理在基本的顶点光照被计算后被应用.在着色器中通过SetTexture 命令来完成. SetTexture 命令在片面程序被使用时不会生效:这种模式下像素操作被完全描述在着色器中. 材质贴图可以用 ...
 - JavaScript trim 实现(去除字符串首尾指定字符)
			
String.prototype.trim = function (char, type) { if (char) { if (type == 'left') { return this.replac ...
 - Android版:验证手机号码的正则表达式
			
http://blog.csdn.net/dai_zhenliang/article/details/8186249 /** * 验证手机格式 */ public static boolean isM ...