PRB: fclose() on Unopened Files Causes Protection ViolationLast reviewed: August 26, 1997Article ID: Q32539 |
The information in this article applies to:
SYMPTOMSAn attempt to close a file with the fclose() function fails and one of the following occurs:
- A protection violation or application error occurs - A "R6001 - null pointer assignment" error occurs CAUSEThe specified file was not open. 16-bit applications: The source code is compiled in the compact or large memory models. In the small memory model, fclose() may return EOF as expected or it may generate an error cited above.
RESOLUTIONModify the source code to only close files that are already open.
MORE INFORMATIONAn attempt to close a file that is not open is a user error. The C run- time library does not verify the validity of file handles passed to the fclose() function. The code example below demonstrates this behavior.
Sample Code
/* * Compile options needed - 16-bit: /AL * - 32-bit: none */ #include <stdio.h> FILE *myfile; int status; main() { myfile = fopen("myfile.dat", "r"); if (myfile == NULL) printf("file open error\n"); status = fclose(myfile); printf("file close status = %d\n", status); } Keywords : CRTIss kbfasttip Version : MS-DOS:5.1,6.0,6.00a,6.00ax,7.0; WINDOWS:1.0,1.5; WINDOWS NT:1.0,2.0,2.1,4.0,5.0 Platform : MS-DOS NT WINDOWS Issue type : kbprb |
================================================================================
© 1998 Microsoft Corporation. All rights reserved. Terms of Use. |