C ++初始化指针随机崩溃应用程序?

时间:2017-10-19 15:54:52

标签: c++ pointers crash

我有以下代码:

<div class="row">
  <div class="col-lg-6 mb-1">
    <div class="card h-100 text-left">
      <div class="card-body">
        <h4 class="card-title">Add Resources</h4>
        <input type="text" class="form-control" name="employee" placeholder="Enter Name" />
        <small id="message" class="form-text text-muted">Press + to add to your list</small>
        <button id="bd1" class="btn add-more" onclick="promptAdd(list)" type="button">+</button>
        <br><br>
        <h5>List of Resources added</h5>
        <div class="form-control" id="list">
          <span id="list"></span>
        </div>
      </div>
    </div>
  </div>
</div>

但在跑步时,它会崩溃。 如果我不创建此类的实例,我的应用程序运行正常,但构造函数似乎崩溃,我不知道为什么。 (我对C ++很新)。

我需要使用指针,因为函数class RawModel{ public: RawModel(GLuint id, GLuint count); GLuint* getID(void); GLuint* getVertexCount(void); private: GLuint *vaoID; GLuint *verts; }; RawModel::RawModel(GLuint id, GLuint count){ *vaoID = id; *verts = count; } GLuint* RawModel::getID(void){ return vaoID; } GLuint* RawModel::getVertexCount(void){ return verts; } 要求指针作为第二个参数。

2 个答案:

答案 0 :(得分:1)

request.POST.get('field[section_name][field_name][label]')

没有初始化指针。相反,它取消引用指针并试图向指针对象提供零。但是,没有任何指针。取消引用未指向某事物的指针是未定义的行为。

初始化指针将是

*vaoID = 0;

但请注意,在此之后指针仍然指向什么。您必须创建一个对象以使指针指向它。

顺便说一下,为什么你首先使用指针还不清楚。我不知道lib,但很可能你只是将实例作为成员:

vaoID = nullptr;

答案 1 :(得分:1)

如果需要初始化指针,请初始化它们,而不是指向它们的数据:

RawModel::RawModel(GLuint id, GLuint count){
    vaoID = nullptr;
    verts = nullptr;
}

但更好的是使用成员初始化:

RawModel::RawModel(GLuint id, GLuint count) :
    vaoID( nullptr ),
    verts( nullptr )
{
}

但不清楚为什么你在类中有指针并返回方法中的指针,而不是按值存储和返回它们。