Exc_bad_access with pointers
Exc_bad_access with pointers
我一直在使用矩阵和图形的项目工作。问题是当我编译它时,下一行弹出:
EXC_BAD_ACCESS (code=2, address=0x7ffff5f3ffff8)
在下一个方法中出现;它是我的类的构造函数:
GrafoMatriz::GrafoMatriz(){
maxVerts = 1;
GrafoMatriz(maxVerts);
}
typedef int * pint;
class GrafoMatriz {
...
int maxVerts;
int numVerts;
Vertice * verts; // there's another class Vertice
int ** matAd;
GrafoMatriz();
GrafoMatriz(int mx);
...
}
GrafoMatriz::GrafoMatriz (int mx){
maxVerts = mx;
verts = new Vertice[mx];
matAd = new pint[mx];
numVerts = 0;
for (int i = 0; i < mx; i++)
matAd[i] = new int[mx];
}
我一直在阅读可能出现的问题,可能是指针的问题:
指针可能从未初始化过。
指针可能因超出数组边界而被意外重写。
指针可能是类型转换错误的对象的一部分,然后写入。
上述任何一种操作都可能损坏指向该指针或其附近的另一个指针,并且使用该指针会损坏该指针(依此类推)。
我猜这是关于我的指针pint
的事情,但我是c++的新手。所以,我还没能修好它。顺便说一下,我在英特尔Macbook Pro上使用Xcode 6.4。
正如@kuroineko在注释中提到的,在c++中不能从另一个构造函数调用一个构造函数。如果使用c++ 11(或更高的标准),则可以使用委托构造函数。否则,您可能需要定义一个初始化函数,例如:
void GrafoMatriz::Initialize(int mx){
maxVerts = mx;
verts = new Vertice[mx];
matAd = new pint[mx];
numVerts = 0;
for (int i = 0; i < mx; i++)
matAd[i] = new int[mx];
}
然后你可以从不同的构造函数中调用这个初始化函数:
GrafoMatriz::GrafoMatriz(){
Initialize(1);
}
GrafoMatriz::GrafoMatriz (int mx){
Initialize(mx);
}
据我所知,剩下的代码应该可以编译。我不知道与变量matAd
相关的代码是否正确,但至少它不会为我崩溃。
相关文章:
- Problems with std::cin.fail()
- 应用程序崩溃并显示"symbol _ZdlPvm, version Qt_5 not defined in file libQt5Core.so.5 with link time reference"
- 这对"With a stackless coroutine, only the top-level routine may be suspended."意味着什么
- Boost.TEST with CLion: "Test framework quit unexpectedly"
- 避免碎片化的ClientHellos with OpenSSL (DTLS)
- Issues with Win32 ReadProcessMemory API
- Qt with WinAPI MouseProc
- [[maybe_unused]] with structured_binding?
- Issue with WriteProcessMemory
- OpenCV RTP-Stream with FFMPEG
- "Unable to start debugging. No process is associated with this object." - 在Visual Studio Code中使用GDB
- std::adjacent_difference with std::chrono time_point
- DLL Made with CMake 使程序崩溃
- QtCreator with C 库中的链接器问题
- SHBrowseForFolder with BIF_BROWSEFORCOMPUTER and SHGetPathFr
- specialized std::default_delete with QQmlComponent
- VS2019 - Sudo Remote Debugging on Linux with Cmake project
- Inference pytorch C++ with alexnet and cv::imread image
- Exc_bad_access with pointers
- pointers with OpenMP