C++ EasyBMP 指针问题

标签 c++ pointers memory-management segmentation-fault

以下代码导致 .ReadFromFile 行出现段错误:

int main()
{
// Load in.bmp
BMP * original;

cout << "line " << __LINE__ << ": Got here!" << endl;
original->ReadFromFile("in.bmp"); //Error HERE!
int width  = original->TellWidth();
int height = original->TellHeight();
cout << "line " << __LINE__ << ": Got here!" << endl;

我正在使用 EasyBMP 库,它包含在主函数之上。我知道它与内存和指针有关,但我不知道用什么来代替“原始->”……我试过了(*原始)。和(&原创)。但我似乎无法理解。有帮助吗?

谢谢!

最佳答案

您的指针 original 指向随机内存位置。尝试使用它会导致未定义的行为。您需要为 BMP 对象分配内存并将地址存储在该指针中。如果你希望你的对象在它退出函数后仍然存在,请使用 original = new BMP();(不要忘记稍后删除它)否则你可以直接做BMP original;使用。

关于C++ EasyBMP 指针问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4805844/

相关文章:

c++ - 为什么 new 能够创建一个字符串数组?

c++ - 需要一个堆分配指针,但我得到了一个堆栈分配指针

java - View 的一个实例上的内存泄漏

C++ 如果一个线程写入后切换一个 bool 值,那么在另一个线程的循环中读取该 bool 值是否安全?

C++ 内存模型 : do seq_cst loads synchronize with seq_cst stores?

c++ - 我可以在类源文件的单独源文件中定义成员函数吗?

pointers - 为什么 fmt.Println 在打印指针时不一致?

memory-management - Matlab:避免在 mex 中分配内存

面临异常时构造函数中的c++空闲内存分配

c++ - 这个指针上的 const_cast 是未定义的行为吗?