[英]Binary Search Tree Creating Stack- overlfow
當程序嘗試添加數字時,出現堆棧溢出。 它似乎正在訪問不存在的二進制搜索樹。 這是錯誤代碼:CIS 350問題2中的0x01084DD9未處理的異常。exe:0xC0000005:訪問沖突讀取位置0xCDCDCDD5。 有人可以幫忙嗎? 提前致謝!
#include <iostream>
#include <algorithm> // for permutations
using namespace std;
struct BST
{
BST* left;
BST* right;
int d;
BST(int data)
{
d = data;
BST* left;
BST* right;
cout << d << endl;
}
void add(int data)
{
cout << d << " | " << data << endl;
if (d < data){
if (right == NULL){
right = new BST(data);
}
else{
right->add(data);
}
}
else{
if (left == NULL){
left = new BST(data);
}
else{
left->add(data);
}
}
}
}
int main()
{
BST* test1 = new BST(12);
test1->add(14);
system("pause");
return 0;
}
正如AlexD在評論中指出的那樣,分段錯誤是由於struct BST
成員left
和right
未被初始化為NULL
所致。
請注意,這由指示“訪問沖突讀取位置0xCDCDCDD5”的錯誤提示。 使用Microsoft C ++運行時庫時,位置0xCDCDCDCD是一個不可思議的數字,用於標記未初始化的內存。
當代碼left->add(data)
嘗試寫入成員left->d
(從left
指向的位置偏移8個字節)時,出現位置0xCDCDCDD5(從0xCDCDCDCD偏移8個字節)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.