数组指针为什么分段错误?

时间:2016-04-14 04:40:37

标签: c++ arrays pointers

我遇到了很多麻烦并通过调试器运行它但我仍然无法弄清楚问题。尝试访问指针数组的成员会导致分段错误,应该将其初始化为零。导致问题的一行如下。任何有关此错误发生原因的指导都将非常感激。

class BNode
{
public:
    const int m = 6;
    BNode();
    ~BNode();
    int keyCount;
    BNode **pointers;
    int *keys;
    void split(int index, BNode *child);
    void _insert(int value);
};

BNode::BNode()
{
    pointers = new BNode*[m];
    cout <<pointers[0]->keyCount; //THIS IS THE TROUBLE LINE**************
    keys = new int[m - 1];
    keyCount = 0;
}

1 个答案:

答案 0 :(得分:2)

你的构造函数为六个指针分配了一个数组。

然后,您访问了第一个指针引用的对象。

问题是你没有分配任何对象。你的六个指针未初始化。

<!--Start of GHRec Script-->
<script type="text/javascript">
(function() {
    var host = ("https:" == document.location.protocol ? "https://secure.eemt.se" : "http://www.eemt.se");
    document.write(unescape("%3Cscript src='" + host + "/gt/js/4190.js' type='text/javascript'%3E%3C/script%3E"));
})();
</script>
<!--End of GHRec Script-->

这分配了六个指针。这不会分配六个对象。两件完全不同的事情。