【发布时间】:2020-11-28 21:43:24
【问题描述】:
我有 2 节课:
class b_class
{
public:
int time_viewed;
int parent_course;
b_class()=default;
b_class(int parent_course):time_viewed(0), parent_course(parent_course){
}
};
和:
class b_course
{
public:
int course_id;
int num_of_classes;
b_class **classes;
b_course(int course_id,int num_of_classes);
};
在后者中我写了以下代码:
b_course::b_course(int course_id,int num_of_classes) {
this->course_id=course_id;
this->num_of_classes=num_of_classes;
classes=new b_class*[num_of_classes*sizeof(b_class*)];
for (int i=0;i<num_of_classes;i++)
{
classes[i]->time_viewed=0;
//classes[i]->parent_course=course_id;
}
}
但我遇到了一个错误,因为我试图访问一些不应访问的内存。
从 0x7000000000000000 读取内存失败(读取 4 个字节中的 0 个)
有人知道这是什么原因吗?
classes 是指向b_class 的指针数组
【问题讨论】:
-
classes=new b_class*[num_of_classes*sizeof(b_class*)];是可疑的。我希望classes=new b_class[num_of_classes];然后有更多代码来“新建”每个数组元素。 -
new int[7] 将分配一个由 7 个 int 元素组成的数组,而不是由 7 个指向 int 的指针组成的数组
-
请不要从您的问题中删除代码,这会使答案难以理解。
-
根据this help page,您不得删除您的问题,因为这会使现有答案无效。因此,您的原始问题已恢复。请不要再次删除。
-
请不要通过破坏您的帖子为他人增加工作量。通过在 Stack Exchange 网络上发布,您已根据 CC BY-SA 4.0 许可授予 Stack Exchange 分发该内容的不可撤销的权利(即无论您未来的选择如何)。根据 Stack Exchange 政策,帖子的非破坏版本是分发的版本。因此,任何破坏行为都将被撤销。