2013_11_13:关于 new 和delelte 的使用

1 、在一个函数中new了一块空间,而后再另外一个函数使用,当最后要释放时,若是释放时出现堆栈错误,多是释放堆栈太快了,数据来不及读取处理,须要在关闭某些函数资源后sleep一下子,再delete在有效,不然可能会出现错误。(这只是我的状况)函数

好比:测试

我在函数A中new了一块buffer,而后再call back 函数中使用这块空间,在执行结束后,咱们须要关闭一些资源,这是咱们就须要sleep(100)//休眠0.1秒,delete buffer才不会出错。可是切记,有new必定要delete掉,否则会出现内存泄漏,关于内存泄漏可使用vld来测试,具体使用方法能够百度。内存

二、对于字对齐问题,短字符向长字符对齐,须要注意是否有符号。资源

好比:变量

在访问一个内存为char *prt;而后DWORD addr初始化为1,而后addr+=prt;这是就须要注意了,由于声明的是有符号char *,DWORD是32位,而char *是8位,当取char地址时,若是第一位1,那么当执行addr+=prt时,短的向长的补齐,且低位对齐,那么DWORD 的 addr应该为0000000000000000000000000000001;而当prt设为10001111时,prt会前面补24个1,那么最后addr+=prt执行的结果是1111111111111111111110010000(具体多个0或者1就本身慢慢数数清楚啊,我也是没数清楚的),而不是0000000000000000000010010000,因此在对于地址+操做时,且是长度不同的变量保持时,必定要用unsigned 代表是无符号的。百度

相关文章
相关标签/搜索