C++的基于范围的循环是C++11出现的新特性,很方便,一定程度上替代了使用迭代器的for循环用法。不过基于范围的for循环有一个隐藏的陷阱,如果不注意可能会出现严重的内存错误。 ...
分类:
编程语言 时间:
2018-03-26 20:48:21
阅读次数:
233
微软为了帮助程序员快速找到内存错误导致的BUG,在堆管理器中提供了一些调试选项用于辅助堆调试,下面是一些常见的调试选项,可以通过Windbg 提供的gflags.exe 来设置。 比如要针对app.exe程序添加堆尾检查功能和页堆,去除堆标志,可以执行以下命令: gflags.exe -i app. ...
分类:
其他好文 时间:
2018-03-07 11:40:45
阅读次数:
186
1. 前言 KASAN是一个动态检测内存错误的工具。KASAN可以检测全局变量、栈、堆分配的内存发生越界访问等问题。功能比SLUB DEBUG功能齐全并且支持实时检测。越界访问的严重性和危害性通过我之前的文章(SLUB DEBUG技术)应该有所了解。正是由于SLUB DEBUG缺陷,因此我们需要一种 ...
分类:
其他好文 时间:
2018-02-21 21:35:55
阅读次数:
247
这个倒是少见的错误,纪录一下大佬。 先上异常 错误一:尝试读取或写入受保护的内存 错误二:未将对象引用设置到对象的实例 错误三: 托管调试助手“FatalExecutionEngineError”(未能截图,网上找的,除了地址都是一样) 在此期间因为排查各种错误,代码删减所以报错才会异常不一样。 上 ...
1.应用程序测试代码
测试代码如程序清单1.1所示:程序清单1.1#include<stdio.h>
intmain(intargc,char**argv){sleep(2);volatileint*a=(int*)0x40;//设置物理地址
printf("value=%x\n",*a);//读取物理地址中的值*a=0x12;//设置物理地址中的值
return(0);}
2.模拟..
分类:
其他好文 时间:
2017-11-22 20:07:54
阅读次数:
158
编码原则: 一般原则 预处理原则 命名和布局原则 类原则 函数和表达式原则 硬实时原则 关键系统原则 (硬实时原则、关键系统原则仅用于硬实时和关键系统程序设计) (严格原则都用一个大写字母R及其编号标识,而推荐原则都用小写字母r及其编号标识,对于前者程序员必须严格遵守,而后者则偶尔可以不遵守) 1、 ...
分类:
编程语言 时间:
2017-11-16 20:54:43
阅读次数:
191
内存管理是C++最令人切齿痛恨的问题,也是C++最有争议的问题,C++高手从中获得了更好的性能,更大的自由,C++菜鸟的收获则是一遍一遍的检查代码和对C++的痛恨,但内存管理在C++中无处不在,内存泄漏几乎在每个C++程序中都会发生,因此要想成为C++高手,内存管理一关是必须要过的,除非放弃C++, ...
分类:
编程语言 时间:
2017-11-11 14:12:58
阅读次数:
222
构造函数调用构造函数是会问题的. 外层函数返回的内存, 与被调用的构造函数返回的内存并不是一个内存. 错误示例代码如下: 太多年没写C++了, debug了好久, 才发现问题出在哪里. 参考: http://www.cnblogs.com/chio/archive/2007/10/20/931043 ...
分类:
编程语言 时间:
2017-11-06 21:26:18
阅读次数:
202
小鱼会有危险吗 P1464 Function 对于一个递归函数w(a,b,c) 如果a<=0 or b<=0 or c<=0就返回值1. 如果a>20 or b>20 or c>20就返回w(20,20,20) 如果a<b并且b<c 就返回w(a,b,c-1)+w(a,b-1,c-1)-w(a,b- ...
分类:
其他好文 时间:
2017-10-13 21:26:15
阅读次数:
208
转自:http://www.cnblogs.com/wang_yb/archive/2013/05/23/3095907.html 内核的内存使用不像用户空间那样随意,内核的内存出现错误时也只有靠自己来解决(用户空间的内存错误可以抛给内核来解决)。 所有内核的内存管理必须要简洁而且高效。 主要内容: ...
分类:
系统相关 时间:
2017-09-29 21:16:24
阅读次数:
299