无法分配/声明__64int(long long int)数组

时间:2015-06-23 01:53:10

标签: c++ integer 64-bit variable-declaration

我正在尝试运行此代码:

#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方法之外,没有一个方法定义是分配内存。

1 个答案:

答案 0 :(得分:2)

  

&#34; ...并且错误表明堆栈已溢出......&#34;

const __int64 SIZE = 1000000LL;
// ...
__int64 numArray[SIZE];

可能需要比为进程配置的堆栈内存更多的堆栈内存(至少需要7812 KB:(1000000 * 64/8)/ 1024 )。请尝试使用动态内存分配:

std::vector<__int64> numArray(SIZE);