我正在尝试运行此代码:
#include <iostream>
#include <time.h>
#include <stdlib.h>
#include<stdint.h>
#include "BSTTemplate.h"
#include "functions.h"
using namespace std;
int main()
{
const __int64 SIZE = 1000000LL;
__int64 randNum;
binarySearchTree<__int64> bst1;
__int64 numArray[SIZE];
//I have more code after but the problem is occurring at the above code.
return 0;
}
我没有收到任何语法错误,因为它编译但是一旦运行就会崩溃。我评论了在这些声明之后出现的所有代码,它以同样的方式崩溃了。我尝试使用Step Into来调试它,但它不会超过第一个括号'{',而是打开一些汇编代码和一个错误,说堆栈溢出。关于我做错了什么的任何帮助?这是我第一次使用大于整数的数据类型。我尝试查找解决方案,但他们要么没有帮助,要么我不理解它们。我也在使用64位计算机。
我知道100万可以放入long int
,但我会使用数十亿的数字,所以我想把所有内容都设为long long int
(或__64int
)
在EdMaster的要求下,这里是BSTTemplate.h的代码:
template <class type>
class binarySearchTree
{
private:
template<class type>
struct nodeType
{
type info;
nodeType<type> * lLink;
nodeType<type> * rLink;
};
nodeType<type> * root;
public:
binarySearchTree();
int height(nodeType<type> *p);
bool search(const type &searchItem) const;
void insert(const type &newData);
void deleteNode(const type &deleteItem);
void deleteFromTree(nodeType<type> * &p);
int numDups;
};
不确定这是怎么回事。除了insert
方法之外,没有一个方法定义是分配内存。
答案 0 :(得分:2)
&#34; ...并且错误表明堆栈已溢出......&#34;
const __int64 SIZE = 1000000LL;
// ...
__int64 numArray[SIZE];
可能需要比为进程配置的堆栈内存更多的堆栈内存(至少需要7812 KB:(1000000 * 64/8)/ 1024 )。请尝试使用动态内存分配:
std::vector<__int64> numArray(SIZE);