我正在尝试编写几个事件处理程序类。基本上,这个想法是为每个逻辑对象组创建一个事件处理程序类。在大多数情况下,事件在对象和它们的处理程序之间,但是在某些情况下,事件也在处理程序对象之间发送。调用删除两个指向同一对象的指针
我写这样的事件被放置在堆栈上的代码(堆如在用户创建的结构;本身使用new
分配的事件)和delete
d他们的信息被读出并采取行动之后。这给了我一些问题,因为在一个案例中,这个事件是由三个处理程序链发送的。假设,HandlerA
发送一个new Event
到HandlerB
,它将它放在堆栈上并将其读取,并将其发送到HandlerC
,该文件将其读取并执行任何需要执行的操作,然后将其设置为NULL
。现在,我们回到HandlerB
,好吧,它也想要delete
和NULL
指向事件的指针。但是指针是一个局部变量,并且它最终删除了两次相同的地址,导致异常。
你如何解决这个问题?你是否需要使用其中一种花式auto_ptr
(这里还是一个早期的学习者),还是我在这里错过了一些基本的东西?
事件在堆栈上分配,或者它们在堆上分配(使用新的)并存储在堆栈数据结构中? – Naveen 2010-07-14 11:20:11
使用new在堆上分配事件并将其存储在堆栈结构中。我想我应该改变上面的措辞...... – 2010-07-14 11:22:28