Microsoft KB Archive/105797

BUG: Memory Leak in Desktop Database Drivers

PSS ID Number: Q105797 Article last modified on 11-24-1993

1.01.1928 WINDOWS

BUG# ODBCDBASE: 1850 (1.01.1928)

= SYMPTOMS =

The ODBC Desktop Database Drivers have a memory leak due to which, a memory allocation error occurs when a program repeatedly allocates and frees a statement handle with the SQL_CLOSE option. Allocating and freeing a statement handle (with fOption = SQL_CLOSE) repeatedly will cause a memory allocation error in the 248th iteration. This problem exists in all the drivers shipping with the ODBC Desktop Database Drivers (dBASE, FoxPro, Paradox, BTRIEVE, Access, Excel and Text). The following code fragment illustrates the problem: SQLAllocEnv(&henv); SQLAllocConnect (henv, &hdbc); SQLDriverConnect (hdbc, hwnd, &quot;&quot;, 0, szConnStrOut, MAX_CONN_STR_SIZE, &cbConnStrOut, SQL_DRIVER_PROMPT); for (i=1; i<500; i++) { SQLAllocStmt(hdbc, &hstmt); SQLFreeStmt (hstmt, SQL_CLOSE); } In the 248th iteration through the for loop, the following memory allocation error occurs: SQLAllocStmt returned SQL_ERROR SQLSTATE = S1001, pfNativeError = [Microsoft][ODBC Single-Tier Driver]Memory allocation error

= WORKAROUND =

Use the following statement: fOption = SQL_DROP instead of using the following in the SQLFreeStmt command: fOption = SQL_CLOSE

= STATUS =

Microsoft has confirmed this to be a problem in the ODBC Desktop Database Drivers version 1.01.1928. We are researching this problem and will post new information here in the Microsoft Knowledge Base as it becomes available.

= Additional reference words: 1.01.1928 ODBC =

Copyright Microsoft Corporation 1993.