爲我的項目之一,我必須做一個新版本的函數insertString,你可以看到下面的代碼:錯誤來自哪裏? Valgrind/C/insertString
這個函數總是給我想要的結果,(我做了一些單元測試),但是主要的問題是這樣的:即使它在我的IDE(彙編等)中工作,它也不會通過使用Valgrind的單元測試,有沒有人可以看到錯誤?
char * insertString(const char * src, int insertPosition, const char * toBeInserted,int insertLength)
{
size_t outputSize=stringLength(src)+(size_t)insertLength;
char* output=malloc(sizeof(char)*(outputSize+1));
int i;
if(output==NULL)
{
fatalError("error during memory allocation in InsertString");
}
for(i=0;i<insertPosition;i++)
{
output[i]=src[i];
}
for(i=0;i<insertLength;i++)
{
output[i+insertPosition]=toBeInserted[i];
}
for(i=0;i<=insertLength;i++)
{
output[i+insertPosition+insertLength]=src[insertPosition+i];
}
output[outputSize]='\0';
return output;
}
謝謝你的一切,並有一個良好的星期天!
*你得到了什麼*錯誤? – 2014-10-12 10:03:31
你確定例如'i + insertPosition + insertLength'小於'outputSize'嗎?或者'insertPosition + i'小於'src'的大小? – 2014-10-12 10:05:57
另外,上一個循環中的循環條件看起來很可疑。 – 2014-10-12 10:08:18