为什么fclose后的free会失败?请高人们给予指点,谢谢!!
各位高人和大佬们,请教如下的问题, 如下代码
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define FRAME_NUM 8
#define LINE_NUM 16
#define COL_NUM 16
#define BUF_SIZE 1296 /* ((( 4 + 1) * 15 + 6 ) * 16) */
int main()
{
char * pchar;
int i, j, m, dat;
FILE * pfile;
if (NULL == (pfile = (fopen("testfile.txt", "w"))))
{
printf("Unable to open the testfile \n");
return -1;
}
pchar = malloc(BUF_SIZE);
if (NULL == pchar)
{
printf("Unable to allocate memory!\n");
return -1;
}
#if 1
for (i = 0; i < FRAME_NUM; i++)
{
memset(pchar , 0, BUF_SIZE);
dat = 0;
for (j = 0; j < LINE_NUM; j++)
{
for (m = 0; m < COL_NUM -1 ; m++)
{
sprintf((pchar + strlen(pchar)), "%4d ", dat++);
}
sprintf((pchar + strlen(pchar)), "%4d\r\n", dat++);
}
fwrite(pchar, 1, BUF_SIZE, pfile);
}
#endif
fflush(pfile);
fclose(pfile);
_fcloseall();
free(pchar); /*始终会报错*/
return 0;
}
在 debug 下运行,上面的 free(pchar); 始终会报错, 显示缓冲区在用.
在 release 下运行是正常的.
如何在 debug 下也确保上面的 free(pchar); 是成功的呢?
上面的处理会应用在 vxWorks 上, 由于内存受限, 这个操作完了, 内存一定要释放, 这个操作该如何做才确保会成功呢? 请各位老大给予指点,谢谢!!!