我有一个ngOnDestroy(){
if (this.firestoreSubscription)
this.firestoreSubscription.unsubscribe();
}
(对象)的指针数组,我必须向该对象数组分配另一个Word
类型的对象。
使用这两行代码,将新对象Word
放入对象数组(w
)中。
word
然后我打印对象数组,一切正常
Word w = Word(new_word, len);
this->word[index - 1] = w;
在“函数结束”之后,我们返回调用另一个函数的主类。
此函数再次打印对象数组,但现在该函数不打印我插入上一个函数的for (int k = 0; k < this->len; k++) {
cout << this->word[k].getChars() << endl;
} // End of function 1
对象。
第二个功能
w
任何人都可以向我解释为什么会发生这种情况以及如何安排它。
答案 0 :(得分:1)
尽管很难确定(因为我们没有剩下的功能要看),但是看来您可能遇到了dangling pointer问题。
在函数中声明Word w = Word(new_word, len);
时,就是将其声明为局部变量,并将其放在stack上。将其添加到数组不会在您仍在使用函数时引起任何问题,但是一旦从您返回的位置返回,函数的内存(包括Word w
)就会被破坏。当您尝试通过从阵列中打印该存储位置来再次访问该存储位置时,您正在寻找的变量不再存在,因此会出现未定义的行为。
幸运的是,您使用的是c ++,并且相当不错地支持堆内存管理!我会考虑将word
实现为指针数组。如果您再尝试这样的事情...
Word *w = new Word(new_word, len); //use "new" to create an object on the heap - persistent after you leave the function!
this->word[index - 1] = w; //make sure this->word is now an array of Word*; it seems to currently be an array of Word
...您可能会发现问题已解决。只是别忘了在完成后释放它!