Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/144.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/0/windows/15.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++ 使用xlslib的内存问题_C++_Windows_Mfc_Xlslib - Fatal编程技术网

C++ 使用xlslib的内存问题

C++ 使用xlslib的内存问题,c++,windows,mfc,xlslib,C++,Windows,Mfc,Xlslib,我正试图让xlslib库()在我的Windows MFC程序(VC 2010)中工作。生成的Excel文件可能有点大,我需要能够在不关闭对话框的情况下编写多个Excel文件,这导致了一些问题 根类称为“工作簿”。我最初宣布: workbook xls; 在处理Excel导出的函数中,但这破坏了堆栈。xls太大了 下一次尝试时,我在对话框的类定义中声明了m_xls,但我不知道如何在调用之间清除m_xls,如果在对话框打开时多次运行Excel导出,第一次运行的数据将在第二次运行中结束,第三次运行的

我正试图让xlslib库()在我的Windows MFC程序(VC 2010)中工作。生成的Excel文件可能有点大,我需要能够在不关闭对话框的情况下编写多个Excel文件,这导致了一些问题

根类称为“工作簿”。我最初宣布:

workbook xls;
在处理Excel导出的函数中,但这破坏了堆栈。xls太大了

下一次尝试时,我在对话框的类定义中声明了m_xls,但我不知道如何在调用之间清除m_xls,如果在对话框打开时多次运行Excel导出,第一次运行的数据将在第二次运行中结束,第三次运行的数据将从第一次和第二次运行中获取,以此类推

我尝试在导出函数结束时从第一次运行中清除数据。我查看了解构器中为类删除主数据存储向量中的数据所做的操作。工作簿类非常复杂,有许多子类,无论何时尝试,在第一次运行Excel代码(清除数据后)后,程序都变得非常不稳定,退出程序时,我在线程池函数中得到一个断言,并在输出窗口中出现许多第一次出现的异常

最后,我在类中声明了一个工作簿指针,然后动态分配了一个工作簿,其中包含:

m_pxls = new workbook;
在函数的开头。最后,我取消分配删除:

delete m_pxls;
这会弹出程序,并显示以下错误消息:

HEAP[Program.exe]: Heap block at 06329360 modified at 0632950A past requested size of 1a2
Windows has triggered a breakpoint in Program.exe.

This may be due to a corruption of the heap, which indicates a bug in Program.exe or any of the DLLs it has loaded.

This may also be due to the user pressing F12 while Program.exe has focus.

The output window may have more diagnostic information.
看起来所有分配的都是基本类,其中没有数据,所有由xlslib中的函数添加的数据都超出了分配的内存范围。也许我误解了什么,但当内存被释放时,工作簿及其所有子类的解构器不是都被调用了吗

我需要弄清楚如何在这里做两件事中的一件:

1) 了解如何在进一步调用Excel代码时重新初始化类定义中静态声明的m_xl。或

2) 弄清楚分配和解除分配的情况,让new/delete正常工作

我编程已经有一段时间了,但这涉及到我以前从未遇到过的内存管理的细微差别。我知道我可能遗漏了一些我应该知道的关于新建/删除的明显信息


提前感谢

如果混合调试模块和发布模块,有时会出现此“错误”,因为它们使用不同的内存分配器。因此,首先,通过使用exe和链接库/DLL的调试版本确保这不是一个伪错误。在对话框类声明中声明库时没有错误。唯一的问题是,在运行Excel代码之间,库数据没有被清除。