野指针

古城微笑少年丶 2021-11-19 12:31 467阅读 0赞
  1. 程序中野指针的存在是一件非常危险的事情,比如:

CEdit *pEdit; pEdit->Create(WS_CHILD, CRect(0, 0, 0, 0), this, 1);

这样会导致

Test.exe中的0x006d0e4d出有未经处理的一场:0xc0000005:读取位置0xcccccccc时发生访问冲突。

并显示异常代码为:

Winctrl1.cpp中的

// CEdit BOOL CEdit::Create(DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID) { CWnd* pWnd = this; return pWnd->Create(_T(“EDIT”), NULL, dwStyle, rect, pParentWnd, nID); }

产生这种情况的原因在于pEdit没有被初始化而为随机值,产生了野指针的函数调用。将该段代码改为

CEdit* pEdit = new CEdit; pEdit->Create(ES_MULTILINE | WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_BORDER, CRect(10, 10, 100, 100), this, 1);

即可。

另外,最好把new和create操作放在类的构造函数或者初始化函数之中,而不要放在成员函数之中。在类的析构函数中要释放开辟的所有内存空间。

转载于:https://www.cnblogs.com/johnpher/archive/2011/08/19/2570630.html

发表评论

表情:
评论列表 (有 0 条评论,467人围观)

还没有评论,来说两句吧...

相关阅读

    相关 指针

    昨天在写完一个函数后,因里面用了很多指针操作, 写完后就回过头来检查,结果发现了一个”野指针”, 另我非常奇怪的是,这个”野指针”被我再次使用,程序运行居然没有问题.

    相关 指针和悬空指针

    概念 野指针:不确定其具体指向的指针。“野指针”最常来自于未初始化的指针。 悬空指针:最初指向的内存已经被释放了的一种指针。 危害 指针指向的内存不可控,访问

    相关 什么是指针

    什么是野指针? >   一个母亲有两个小孩(两个指针),一个在厨房,一个在卧室,(属于不同的代码块,其生存期不同)母亲让在厨房的小孩带一块蛋糕(指针指向的对象)给在卧室的

    相关 指针

    野指针 野指针不是空指针,是一个指向垃圾内存的指针。 形成原因: 1.指针变量没有被初始化。 任何指针变量被刚创建时不会被自动初始化为NULL指针,它的缺省值是

    相关 C语言指针

    野指针产生原因:利用 free函数释放了指针的内存空间 但指针本身没有重置为NULL 造成 释放的时候 仍可以通过 p!=NULL 进行判断 避免方法 在定义指针时