堆栈分配的结构总是在同一个位置?

时间:2015-09-26 13:59:11

标签: c++ stack

我正在为哈希表编写一个Insert函数,我需要在该函数中创建一个键值对(struct Item)。我发现如果我在堆栈上创建它,例如private boolean isAnimCompleted(){ // you need to check animation is completed some how boolean completed = false; . . return completed; } public void startAnimManually(){ final Handler handler = new Handler(Looper.getMainLooper()); handler.post(new Runnable() { private Runnable thisRunnable = this; @Override public void run() { view.invalidate(); if (!isAnimCompleted()){ handler.post(thisRunnable); } } }); } ,然后每当我调用Insert时,将在堆栈的同一位置创建不同的键值对。如果我使用堆分配内存,则不会发生这种情况。为什么他们在堆栈上的同一位置?

以下是我的示例代码:

Item item(key, value);

}

Item2是堆栈分配,我使用它的方式是在评论中。

1 个答案:

答案 0 :(得分:2)

堆栈分配版本不起作用,因为您存储了一个指向局部变量的指针,该局部变量后来超出了作用域。您将指针保留在对象本身的生命周期之外。

相关问题