在下面的代码中,我通过给缓冲区大小设置了一个错误。
char request[10];
从文件中读取时,我使用fscanf和文件中的行是“THIS_IS_THE_TEST_CODE”。这里的行长度大于缓冲区的大小。
但下面是我的代码在没有核心转储的情况下成功执行的一些情况,即使缓冲区大小很小。
情景1:
我评论了这一行
class_test *c = class_test :: getinstance();
那时代码执行成功而没有转储。
Scneario 2: 找到错误后,我增加了缓冲区大小,它适用于所有情况。
但pofack核心显示在feof
fefabfe0 feof (1, ffbff9c4, ffbff9cc, 212e4, ff390100, 0)
00010940 _start (0, 0, 0, 0, 0, 0) + 5c
为什么这样的代码行为?
环境:UNIX SOLARIS
class class_test
{
public:
static class_test* getinstance()
{
static class_test single_obj;
return &single_obj;
}
};
#include<iostream>
int main()
{
using namespace std;
class_test *c = class_test :: getinstance();
FILE *fptr;
char request[10];
if((fptr = fopen("inputstat.txt","r")) == NULL)
{
printf("Couldn't Open..");
}
else
{
while(!feof(fptr))
{
memset(request,'\0',sizeof(request));
fscanf(fptr,"%s",request);
}
}
return 0;
}