0
我正在写一个函数,允许某人扩展一个char *数组,并且在做一些测试时我注意到,当我放入3个以上的元素时,第二个变成了损坏的东西。多次realloc调用后第二个字符串损坏
这是函数本身:
void Data::PushBack_String(char** PtrToPtr, char* Ptr, unsigned short Index)
{
unsigned short String_Length;
for(String_Length = 0; Ptr[String_Length] != '\0'; ++String_Length);
++String_Length;
char* NewPtr = (char*)malloc(String_Length);
strcpy(NewPtr, Ptr);
PtrToPtr = (char**)realloc(PtrToPtr, Index);
PtrToPtr[Index] = NewPtr;
}
还注意到,当元件的数量超过17种元素的程序崩溃。
我可以想到学术课程以外没有任何理由为什么你不使用'std :: unordered_map'完成这个任务。 –
WhozCraig
我知道有这样的最简单的方法,但我想学习如何操作动态数组。 – EnryFan
你计算'String_Length'的方式是错误的。你在每个循环中增加两次'String_Length'。如果长度奇数,它会传递字符串的末尾。 –