誰かが char* の配列を展開できるようにする関数を書いていましたが、いくつかのテストを行っているときに、3 つ以上の要素を配置すると、2 番目の要素が破損することに気付きました。
これは関数自体です:
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 要素を超えると、プログラムがクラッシュすることにも気付きました。