我用cpp編寫了一個程序,用cin讀取字符串並將它們保存在分配的內存中。我需要做的額外工作是處理輸入大小超過預期的情況。當我測試代碼時,它不顯示最終的內存保存的內容,不能自動終止。這是代碼。在C++中分配內存時出錯
#include <iostream>
#include <memory>
using namespace std;
int main(){
allocator<string> sa;
cout << "Please input the amount of words" << endl;
int count;
cin >> count;
auto p = sa.allocate(count);
cout << "Please input the text" << endl;
string s;
auto q = p;
while(cin >> s){
if (q == p + count) {
auto p2 = sa.allocate(count * 2);
auto q2 = uninitialized_copy_n(p, count, p2);
while (q != p) {
sa.destroy(--q);
}
sa.deallocate(p, count);
p = p2;
q = q2;
count *= 2;
}
sa.construct(q++, s);
}
for (auto pr = p; pr != q; ++pr) {
cout << *pr << " ";
}
cout << endl;
while (q != p) {
sa.destroy(--q);
}
sa.deallocate(p, count);
return 0;
}
爲什麼使用分配器呢?我很驚訝你使用這個而不是新的甚至更好的(!),像std :: vector和std :: string這樣的容器。 –