Visual Studio 2005 中是否有办法找出导致此访问冲突的指针或变量?我试图在调试模式下运行并在它发生时中断。通过查看调用堆栈,它发生在函数的末尾(见下文)。可以使用 try/catch 找出它是哪个指针吗?
编辑: 发布我的代码:
我的应用程序中有一个 Qt 行编辑和一个复选框。切换复选框将切换行编辑中的数据格式。像 3'b111 <==> 3'h7。下面是连接到复选框 stateChanged 信号的回调函数。当破坏局部变量时,异常发生在函数的末尾。
// switch hex/binary format. 15'h0000 <==> 15'b000000000000000
void switchDataFormat(int checkState) {
QLineEdit* writeRegLE = this->getWriteRegLineEdit();
string oldText = writeRegLE->text().toStdString();
string newText = "";
int maxLength;
string regLengthText = oldText.substr(0, oldText.find('\''));
string regValueText = oldText.substr(oldText.find('\'')+2);
int regLength = this->getRegLength();
if (checkState == Qt::Unchecked) {
// switch to binary format
maxLength = regLengthText.size() + 2 + regLength;
string binaryText;
for (int i = 0; i < regValueText.size(); ++i) {
binaryText += hexToBinary(regValueText[i]);
}
newText = regLengthText + "'b" + binaryText.substr(binaryText.size()-regLength); // trimming leading zeros to fit regLength
}
else {
// switch to hex format
maxLength = regLengthText.size() + 2 + regLength/4 + 1;
newText = regLengthText + "'h";
// zero filling to 4*n bits
if (regLength%4 != 0) regValueText = string(regLength%4,'0') + regValueText;
for (int i = 0; i < regValueText.size(); i+=4) {
newText += binaryToHex(regValueText.substr(i,4));
}
}
writeRegLE->setMaxLength(maxLength);
writeRegLE->setText(QString::fromUtf8(newText.c_str()));
}