0

誰かが 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 要素を超えると、プログラムがクラッシュすることにも気付きました。

4

2 に答える 2