Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/131.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何重新分配wxImage指针_C++_Pointers_Wxwidgets_New Operator_Delete Operator - Fatal编程技术网

C++ 如何重新分配wxImage指针

C++ 如何重新分配wxImage指针,c++,pointers,wxwidgets,new-operator,delete-operator,C++,Pointers,Wxwidgets,New Operator,Delete Operator,我试图在wxWidgets中创建一种图像编辑器,并将图像加载并存储在wxImage指针中。当用户单击一个按钮时,它会删除指针并再次将其分配给一个新的wxImage。我使用的代码如下所示 class MyFrame : public wxFrame { wxImage *old_image; void OnLoad(wxCommandEvent &event); }; void MyFrame::OnLoad(wxCommandEvent &event) { // G

我试图在wxWidgets中创建一种图像编辑器,并将图像加载并存储在wxImage指针中。当用户单击一个按钮时,它会删除指针并再次将其分配给一个新的wxImage。我使用的代码如下所示

class MyFrame : public wxFrame {
  wxImage *old_image;
  void OnLoad(wxCommandEvent &event);
};

void MyFrame::OnLoad(wxCommandEvent &event) {
  // Get the image path with wxFileDialog and read it.

  wxImage *new_image = new wxImage(new_width,
                                   new_height,
                                   image_data);

  // old_image->Destroy(); // I think this also work
  delete old_image;
  old_image = new_image;
}
我知道代码在我第一次加载新映像时就可以工作,但在第二次加载时它会挂起并使应用程序崩溃。所以我认为错误不在加载算法中

我如何删除wxImage? 还是有更可靠的方法来改变图像


我正在使用wxWidgets 3.0.5,MinGW-w64和gcc 8.0.1,通过该构造函数,
wxImage
将拥有
image\u数据
并在删除时释放它。为了重用它,您必须将
true
传递给第四个参数(
static_data
,请参阅文档)。

您是否有硬件崩溃或断言?我认为这是一个崩溃,因为没有消息,应用程序就像通过Ctrl+COk关闭一样关闭,我做了更改,但问题仍然存在,应用程序挂起并自行关闭。我也尝试过使用SetData(),但没有成功。您可能应该显示更多的代码,即您正在使用的
image\u data
。实际上,
image\u data
是OpenCV生成的一个
unsigned char*
,但OpenCV的唯一目标是生成该数据,并且该数据仅在
MyFrame::Onload()时使用
将其加载到
wxImage
中,但信息仍然不足。OpenCV可能应该将其处理为
无符号字符**
——是吗?或者,生成的数据并不总是
new\u width
x
new\u height
。如果只使用第一次迭代中的数据,它是否继续显示初始图像?否,OpenCV使用数据作为
cv::Mat
,我使用OpenCV函数获取一个
无符号字符*
,供wxWidgets使用。不,它不工作,如果我加载相同的图像,它也会崩溃。OpenCV返回和读取的所有图像数据的大小始终相同,我已经验证并检查了好几次。