我有類型的結構重複 我有稱爲stringsize的int類型的變量,其具有5 我創建一個動態數組的值:動態數組分配在C++問題
Duplicate *duplicates;
duplicates = new Duplicate[stringSize - 1];
後來我刪除[]重複;
我只在該數組中獲得一個成員?我已經通過調試驗證了stringSize - 1 = 4。我能做些什麼來獲得我需要的4名成員?
讚賞任何幫助, 感謝// :)
我有類型的結構重複 我有稱爲stringsize的int類型的變量,其具有5 我創建一個動態數組的值:動態數組分配在C++問題
Duplicate *duplicates;
duplicates = new Duplicate[stringSize - 1];
後來我刪除[]重複;
我只在該數組中獲得一個成員?我已經通過調試驗證了stringSize - 1 = 4。我能做些什麼來獲得我需要的4名成員?
讚賞任何幫助, 感謝// :)
Duplicate *duplicates;
duplicates = new Duplicate[stringSize - 1];
確實給你duplicates[0-3]
(假設stringSize - 1
4,像你說的)。你怎麼確定你越來越少?
我懷疑你可能正在做的事情如:sizeof(duplicates)/sizeof(duplicates[0])
,並在一個變化得到一個。上述代碼僅適用於靜態分配的陣列,其中sizeof(duplicates)
將與陣列的大小(以字節爲單位)匹配。在你的情況下,它只會返回系統上指針的大小。 (duplicates
是Duplicate*
)
並且必須:如果這是「真實」代碼,則使用std::vector
。
您的調試器正在盡其所能。就它而言,你只是獲得了一些數據的指針。試想一下:
Duplicate foo;
Duplicate *duplicates_A;
duplicates_A = &foo; // points to one Duplicate
Duplicate *duplicates_B;
duplicates_B = new Duplicate[4]; // points to memory containing 4 Duplicate's
bar(duplicates_A);
bar(duplicates_B);
void bar(Duplicate* p)
{
// is p a pointer to one value, or is it an array?
// we can't tell, and this is the same boat your debugger is in
}
應該如何調試,只是給一個指針,知道它是否指向數組或只是一個值?它不能,安全。 (它必須以某種方式確定指針是否指向陣列,以及該陣列的大小。)
您不能使用sizeof
來確定動態數組的大小。事實上,沒有一個標準的API來確定動態數組的大小。如果您需要訪問大小,請使用std::vector
。
如果您使用調試器來查看您獲得的元素,問題可能是您的變量的類型是Duplicate*
這只是一個指針(在C中恰好也是一個數組,但類型只是一個指針Duplicate
的一個實例
爲什麼你認爲你只能得到一個元素?你如何檢查它? – sth 2010-01-31 07:21:12