首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >类和动态分配的数组读取访问冲突。

类和动态分配的数组读取访问冲突。
EN

Stack Overflow用户
提问于 2020-04-07 01:09:24
回答 1查看 57关注 0票数 0

注意我的问题:确保在构造函数中而不是在类的主体中初始化动态数组。

当我试图为一个局部变量分配数组的值时,我遇到了读取访问冲突。数组实际上是在另一个类中动态分配和初始化的指针。我不知道我错过了什么,如果有人能帮我,我会非常感激的:

编辑:我修正了之前的一个错误,我把数组从索引中调用出来,但是我仍然得到一个读取错误。

Edit#2:我在没有使用指针的情况下尝试了下面相同的代码片段,而且它可以工作。但是,当我动态分配指针时,我的程序就会崩溃。

代码语言:javascript
复制
#include <iostream>
using namespace std;


class Discretization {
public:
    int Number_Elements, Number_Nodes;
    int *Ji = new int [Number_Elements];
    int* Jj = new int[Number_Elements];
    double* x = new double[Number_Nodes], * y = new double[Number_Nodes];

    Discretization() {

        Number_Elements = 8;
        Number_Nodes = 9;


        Ji[0] = 1; Jj[0] = 2;
        Ji[1] = 2; Jj[1] = 3;
        Ji[2] = 3; Jj[2] = 4;
        Ji[3] = 2; Jj[3] = 5;
        Ji[4] = 3; Jj[4] = 6;
        Ji[5] = 6; Jj[5] = 7;
        Ji[6] = 7; Jj[6] = 8;
        Ji[7] = 7; Jj[7] = 9;

        x[0] = -8.327; y[0] = -35.040;
        x[1] = 0; y[1] = -35.040;
        x[2] = 0; y[2] = 0;
        x[3] = -8.327; y[3] = 0;
        x[4] = 8.327; y[4] = -35.040;
        x[5] = 8.327; y[5] = 0;
        x[6] = 25.778; y[6] = 0;
        x[7] = 25.778; y[7] = 5.986;
        x[8] = 25.778; y[8] = -5.986;

    }
};


class GeometricProperties : public Discretization {

public:


    void AddVar(int Current_Element) {


        int Node_m = Ji[Current_Element] - 1; //Returns the first node of the element
        int Node_n = Jj[Current_Element] - 1; //Returns the second node of the element


        //Retruns local x coordinate of node m and n
        double Node_m_x = x[Node_m];
        double Node_n_x = x[Node_n];
    }

    GeometricProperties() {

        AddVar(1);
    }
};



int main() {

    GeometricProperties myobj;


    return 0;
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-07 01:16:24

GeometricProperties的构造函数调用AddVar(2),这意味着CurrentElement为2,但是Ji的大小为2,所以只能索引0和1。

这意味着您正在对Ji进行超出界限的索引。我是UB,你的程序可能会崩溃。

您需要修复所有这样的UB示例。即使你的程序有UB在代码中永远不会运行,这个程序也是错误的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61071287

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档