firemail

标题: 引发了异常: 读取访问权限冲突。 _q_value 是 0xDDDDDDDD。 [打印本页]

作者: Qter    时间: 2020-4-4 16:00
标题: 引发了异常: 读取访问权限冲突。 _q_value 是 0xDDDDDDDD。
名称
类型
id
15987178197214944733
unsigned __int64
parentId
15987178197214944733
unsigned __int64
firstName
???
QString
lastName
???
QString
phoneNum
???
QString
lastLoginTime
???
QString
showUserCount
???
QString
serverCount
???
QString
serverNum
-572662307
int
serviceMax
-572662307
int
queueCount
???
QString
queueNum
-572662307
int
userTotalCount
-572662307
int
userOnlineCount
-572662307
int
otherId
-572662307
int
userIds
{ size = ??? }
QVector<unsigned __int64>
peerData
0xdddddddd {id=??? name=??? nameText={_minResizeWidth={val=??? } _maxWidth={val=??? } _minHeight=??? ...} ...}
PeerData *
hasAvatar
true (221)
bool
online
true (221)
bool
expanded
true (221)
bool
isGroup
true (221)
bool
userInGroup
true (221)
bool
userInGroupTemp
true (221)
bool




引发了异常: 读取访问权限冲突。
_q_value 是 0xDDDDDDDD。


>        LongChat.exe!QGenericAtomicOps<QAtomicOpsBySize<4>>::load<int>(const int & _q_value) 行 83        C++
        LongChat.exe!QBasicAtomicInteger<int>::load() 行 116        C++
        LongChat.exe!QtPrivate::RefCount::ref() 行 49        C++
        LongChat.exe!QString:String(const QString & other) 行 890        C++
        LongChat.exe!Contact::ContactDelegate::paintGroup(QPainter * painter, const QStyleOptionViewItem & option, const QModelIndex & index, Contact::ContactInfo * pCI) 行 177        C++
        LongChat.exe!Contact::ContactDelegate::paint(QPainter * painter, const QStyleOptionViewItem & option, const QModelIndex & index) 行 108        C++
        LongChat.exe!QTreeView::drawRow(QPainter * painter, const QStyleOptionViewItem & option, const QModelIndex & index) 行 1773        C++
        LongChat.exe!QTreeView::drawTree(QPainter * painter, const QRegion & region) 行 1508        C++
        LongChat.exe!QTreeView::paintEvent(QPaintEvent * event) 行 1333        C++
        LongChat.exe!QWidget::event(QEvent * event) 行 8923        C++




作者: Qter    时间: 2020-4-4 16:01
  1.         //ContactInfo* pCI = (ContactInfo*)index.data(Qt::DisplayRole).value<void*>();
  2.                         ContactInfo* pCI = dynamic_cast<ContactInfo*>(index.data(Qt::DisplayRole).value<ContactInfo*>());
复制代码

作者: Qter    时间: 2020-4-4 16:01
本帖最后由 Qter 于 2020-4-4 16:05 编辑

TreeItem* item = static_cast<TreeItem*>(index.internalPointer());
TreeItem *TreeModel::getItem(const QModelIndex &index) const{    if (index.isValid()) {        TreeItem *item = static_cast<TreeItem*>(index.internalPointer());        if (item)            return item;    }    return rootItem;}

作者: Qter    时间: 2020-4-4 16:57
  1. //TreeItem* item = static_cast<TreeItem*>(index.internalPointer());
  2.             TreeItem* item = dynamic_cast<TreeItem*>((TreeItem*)index.internalPointer());
复制代码

作者: Qter    时间: 2020-4-8 11:34
在进行C++开发时候,由于野指针、空指针、未初始化内存等原因,很容易导致内存错误,并报出特定错误码。

Google上对上述错误码的解释如下:

0xCDCDCDCD - Created but not initialised 未初始化的堆内存

0xDDDDDDDD - Deleted 引用的内存已经/对象被删除

0xFEEEFEEE - Freed memory set by NT's heap manager

0xCCCCCCCC - Uninitialized locals in VC6 when you compile w/ /GZ 未初始化的栈内存

0xABABABAB- Memory following a block allocated by LocalAlloc()

VC++在Debug编译方式编译的程序中,会跟踪用new分配的内存。新分配的内存会用0xcd(助记词为Cleared Data)填充,防止未初始化;当它被delete后,又会被0xdd(Dead   Data)填充,防止再次被使用。这样有利于调试内存错误。之所以选这样的填充模式,是因为:

1.大数,若被当成指针就会越界

2.奇数,指针通常指向偶数地址  

3.非0, 这样不会和   NULL   混淆。


在Release版中不会有这些字节填充。
————————————————
版权声明:本文为CSDN博主「jigetage」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/jigetage/java/article/details/79709664






欢迎光临 firemail (http://firemail.wang:8088/) Powered by Discuz! X3