| Walt Mankowski on Mon, 15 Jul 2002 14:30:13 +0200 |
|
Note: Resending since my original post Saturday night seems to have
been dropped somewhere...
On Sat, Jul 13, 2002 at 11:26:38AM -0400, Fred K Ollinger wrote:
> I have this code where I have an object and I'd like to modify it while in
> another object. Is there a way to do this? I get segfaults when I do:
>
> // begin snippet
> voxInstallCommon::voxInstallCommon(QLabel *qlIncoming)
> {
> qlBillBoard=new QLabel("unlabeled", 0, 0);
> qlBillBoard=qlIncoming;
> //end snippet
That code segfaults? I'm surprised it even compiles. What type is
qlBillBoard? It looks like it must be QLabel. Then you either want
to say
QLabel qlBillBoard = new QLabel("unlabeled", 0, 0);
or
QLabel qlBillBoard = qlIncoming;
but almost certainly not both. The first statement allocates space
for a new QLabel object, and assigns a pointer to that space to
qlBillBoard. The second overwrites the pointer from the first line
with the pointer you passed in as a parameter. There's no way now to
get at the first pointer anymore, so there's no way to delete it when
you don't need it anymore. Congratulations, you've created a memory
leak!
I could suggest some correct ways to do that, but I'm not even sure
from that snippet what you're trying to do. Are you trying to store a
QLabel in a qlBillBoard or vice versa?
Walt
Attachment:
pgp6YEMLx9AIO.pgp
|
|