簡體   English   中英

c++中動態分配和刪除對象數組

[英]Dynamically allocate and delete an array of objects in c++

所以我做了一些研究,到目前為止我有以下(示例代碼):

一類:

class my_class {
  my_class(int a, double b);
  ...
}

還有一個動態數組:

my_class **array_t;

和初始化(帶有一些隨機數):

int amount = 10;
array_t= new my_class*[amount];

for (int i = 0; i < amount; i++) {
   array_t[i] = new my_class(1, 2.0);
}

我認為這應該有效,對吧? 至少編譯器沒有向我拋出任何錯誤。

現在我想改變array_t的大小 所以我認為最簡單的方法是刪除數組,並為其分配新的內存。 我試過這個:

1: for (int i = 0; i < amount; i++) {
2:   delete array_t[i];
3: }
4: delete[] array_t;

並在下一步中分配新內存,如上所示。

但是我收到以下錯誤消息:

Line 2: error: expected primary-expression before '[' token
Line 4: error: expected primary-expression before ';' token

我讀到 for 循環實際上不是必需的。 但無論如何這兩個刪除語句都不起作用..

這可能是一個非常愚蠢的錯誤,但我不知道這里有什么問題:D 任何幫助將不勝感激!

嘗試寫 delete [] array_t; 在 for 循環中。 因為通過這種方式,您將“刪除”數組。 並重新分配它只需使用 array_t= new my_class[number];

好的,首先感謝大家的幫助;) 我剛剛犯了一個愚蠢的編程錯誤:D

基本上我輸入的是:

delete my_class[i];

代替

delete array_t[i];

在迭代 for 循環時,它給了我“預期的主表達式之前 .. 令牌”-錯誤。 我對我的變量感到困惑。

我在上面發布它的方式我已經嘗試過並且確實有效。 給您帶來的不便,我深表歉意;)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM