zoukankan      html  css  js  c++  java
  • 2013_11_13:关于 new 和delelte 的使用

    1 、在一个函数中new了一块空间,然后再另一个函数使用,当最后要释放时,如果释放时出现堆栈错误,可能是释放堆栈太快了,数据来不及读取处理,需要在关闭某些函数资源后sleep一会儿,再delete在有效,否则可能会出现错误。(这只是个人情况)

    比如:

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

    2、对于字对齐问题,短字符向长字符对齐,需要注意是否有符号。

    比如:

    在访问一个内存为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 表明是无符号的。

  • 相关阅读:
    .NET平台下,初步认识AutoMapper
    python 二分查找算法
    01背包问题(动态规划)python实现
    NSSM安装服务
    iis .apk .ipa下载设置
    动态规划 转载
    leetcode 5 查找最长的回文子串
    [DEncrypt] MySecurity--安全加密/Base64/文件加密 (转载)
    [DEncrypt] HashEncode--哈希加密帮助类 (转载)
    [DEncrypt] Encrypt--加密/解密/MD5加密 (转载)
  • 原文地址:https://www.cnblogs.com/xiaoaiyi/p/3422334.html
Copyright © 2011-2022 走看看