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'。如果長度奇數,它會傳遞字符串的末尾。 –