char strBegin[256];
char strEnd[256];
sprintf(strBegin, "<%s", bufField);
段点1:
sprintf(strEnd, "</%s>", bufField);
段点2:说明:我在程序中调试的时候发现执行到段点1的时候程序使用的内存增加了4K
而同样一个函数继续执行,到段点2内存不再涨了,这是为什么啊?
闹的我的程序内存老是增加,过一段时间就当了!
请指教!
谢谢!
char strEnd[256];
sprintf(strBegin, "<%s", bufField);
段点1:
sprintf(strEnd, "</%s>", bufField);
段点2:说明:我在程序中调试的时候发现执行到段点1的时候程序使用的内存增加了4K
而同样一个函数继续执行,到段点2内存不再涨了,这是为什么啊?
闹的我的程序内存老是增加,过一段时间就当了!
请指教!
谢谢!
解决方案 »
- 讨论:如果程序只是操作数据库的数据,是否有必要建立多文档应用程序(MDI)?
- 我现在在passthru的基础上开发防火墙,如何在Ndis中获取本机的MAC地址以及IP地址。
- 属性表提问
- 请问有没有xml的格式,谢谢?
- WMI具体问题,up有分
- 一个编译时遇到的问题,关于源文件和头文件的
- console程序和MFC exe编译有什么区别?为什么console下的C程序,在MFC exe中运行结果和console下不一样?
- 求救:做一个Active X 控件,编译时说找不到 MFC42u.lib怎么回事????
- 如何生成两个互不相关的0,1序列?
- 求助:ADO+vc访问数据库出现错误
- VC++中怎么在屏幕上打印出反字,还有字体的LogFont.lfOrientation什么情况下无效(经常无效),怎么才有效
- 各位救救急,公司的电脑,不处理好不能回家!我已经在这耗了多半天了!!!
但sprintf会有分配内存操作,hook内存分配过程可以看出来
{
if(bufXML==NULL || bufField==NULL)
return NULL; char strEnd[256];
char strBegin[256];
sprintf(strEnd, "</%s>", bufField);
sprintf(strBegin, "<%s", bufField);
int iPosBegin=strstr(bufXML, strBegin)-bufXML;
int iPosEnd=strstr(bufXML, strEnd)-bufXML;
if(iPosBegin<0 || iPosEnd<0)
return NULL; int iSizeBegin=strstr(bufXML+iPosBegin+strlen(strBegin),">")-(bufXML+iPosBegin)+1;
int iSizeEnd=strlen(strEnd);
if(iSizeBegin<0 || iSizeBegin+iPosBegin>iPosEnd)
return NULL; iMovePos=iPosEnd+iSizeEnd; int iLength=iMovePos-iPosBegin;
char *strGet=(char*)calloc(iLength+1,1);
memcpy(strGet, bufXML+iPosBegin, iLength);
return strGet;
}功能只是分析XML中的数据而已!
只有段点1内存增长,其他地方内存不变啊
谢谢!
请指教