我遇到了很多麻烦并通过调试器运行它但我仍然无法弄清楚问题。尝试访问指针数组的成员会导致分段错误,应该将其初始化为零。导致问题的一行如下。任何有关此错误发生原因的指导都将非常感激。
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;
}
答案 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-->
这分配了六个指针。这不会分配六个对象。两件完全不同的事情。