我的程序在运行中有时会报错:
xx指令引用的xx内存不能为read 或
xx指令引用的xx内存不能为write,
请问问题出在哪里?谢谢
xx指令引用的xx内存不能为read 或
xx指令引用的xx内存不能为write,
请问问题出在哪里?谢谢
解决方案 »
- error LNK2019和error LNK1120如何解决?!急求!!
- 如何隐藏鼠标?
- 请问SE_DEBUG_NAME是什么样级别的?还有如何提升自己的权限?
- _variant_t返回值问题!~
- 如果同时请求连接的客户端个数超过了5个,该怎么设置监听端口呢?
- 程序加载在注册表run键值下,机器启动后能运行,但却丢失功能
- dll中取得一个*.exe程序句柄问题//急
- 请教高手:求救,网络传输64M文件需要10分钟,如何提高速度
- VS2008中如何给菜单设置图标??(基于MFC工程)
- 请问如何调用C++中的库函数AVIMakeCompressedStream()将一段被解压的音频流重新变为mp3的压缩格式
- 谁知道SQL Server中.mdf文件的存储格式?
- 百分征集:如何在一张有车辆的图片中将车牌号提取出来!
数组越界都会造成 该断言
特别是指针,ASSERT宏的检查十分严格
还有一个问题,指针不初始化可以吗,同一指针初始化两次(均赋值为NULL)会有问题吗?
指针,因为用if 语句很容易判断。但是“野指针”是很危险的,if 语句对它不起作用。
“野指针”的成因主要如下:
(1)指针变量没有被初始化。任何指针变量刚被创建时不会自动成为NULL 指针,它的缺省值是随机的,它会乱指一气。所以,指针变量在创建的同时应当被初始化,要么将指针设置为NULL,要么让它指向合法的内存。例如
char *p = NULL;
char *str = (char *) malloc(100);
(2)指针p 被free 或者delete 之后,没有置为NULL,让人误以为p 是个合法的指针。
(3)指针操作超越了变量的作用范围。这种情况让人防不胜防,示例程序如下:
class A
{
public:
void Func(void){ cout << “Func of class A” << endl; }
};
void Test(void)
{
A *p;
{
A a;
p = &a; // 注意a 的生命期
}
p->Func(); // p 是“野指针”
}
函数Test 在执行语句p->Func()时,对象a 已经消失,而p 是指向a 的,所以p 就成了“野指针”。但奇怪的是运行这个程序时居然没有出错,这可能与编译器有关。
同一指针初始化两次(均赋值为NULL)会有问题吗?初始话只有1次!第2次是赋值,不是初始话,赋值n次都没有问题,指针也是变量。