Visual C ODBC关闭记录集泄漏内存
visual C++ odbc close recordset leaks memory
在我的应用程序中,我将面临内存泄漏。完整的应用程序是多线程,每个线程通过ODBC驱动程序13.1连接到同一DB(Microsoft SQL Server 2014 SP3(。应用程序打开并动态关闭所需的记录设置。
我正在调查我的代码,现在我将手指指向记录集Close()
功能。我写了此示例代码,导致内存泄漏。
ccellsset是由Visual Studio向导制造的消费者ODBC MFC类,它是从crecordset继承的。
我还尝试了最近的SQL Server版本,但我的场景相同。
在我的机器上,每对rs.open((和rs.close((导致泄漏约1kb。
在此处引用在MSDN上打开和关闭的引用,参考呼叫Close((应该足以避免泄漏。
void Test(CDatabase* ptr_db)
{
CCellsSet rs;
rs.m_pDatabase = ptr_db;
rs.Open();
rs.Close();
}
int main()
{
CDatabase DB;
DB.OpenEx("DSN=__myDNS__;UID=sa;PWD=__myPWD__", CDatabase::noOdbcDialog);
for (long i = 0; i < 1000; i++)
{
printf("loop '%d' n", i);
Test(&DB);
}
if (DB.IsOpen())
{
DB.Close();
}
return 0;
}
在构造ccellsset时不传递cdatabase*时,创建了该类型的对象。之后,指向该对象的指针被您覆盖。请参阅https://learn.microsoft.com/en-us/cpp/mfc/reference/crecordset-class?view=vs-2017#crecordset
感谢DeLeaker!它可以帮助我集中真正的泄漏。
事实上,我之前发布的代码没有泄漏在内存中
相关文章:
- C++功能泄漏内存,我是C++新手,不确定如何解决
- 我的堆栈弹出式磁带的实现是否泄漏内存?
- 将 c++ 向量转换为字符 ** 而不会泄漏内存
- 析构函数 C++ 使泄漏内存
- 构造函数对象赋值是否泄漏内存
- corba :: orb_init泄漏内存
- Gmock泄漏内存
- 如何在不泄漏内存的情况下删除链接列表
- Visual C ODBC关闭记录集泄漏内存
- 为什么泄漏内存比在动态数组上执行 delete[] 慢
- OpenGL正在泄漏内存.哪个对象未释放
- 可以std ::退出泄漏内存
- uiautomation findall泄漏内存
- 为什么在此OpenCL代码中泄漏内存,为什么要泄漏内存
- pthread在完成后会泄漏内存
- win32 标准::线程泄漏内存
- 返回指向同一变量的指针是否会泄漏内存
- 使用clectType(new any_type())可能会泄漏内存泄漏
- Windows开发:如何确定我的应用程序是否正在泄漏内存
- WinHttp打开泄漏内存