From: | Guillaume Lelarge <guillaume(at)lelarge(dot)info> |
---|---|
To: | pgadmin-support(at)postgresql(dot)org |
Cc: | Quan Zongliang <quanzongliang(at)gmail(dot)com> |
Subject: | Re: I need help, about c++ pointer |
Date: | 2009-07-15 14:38:13 |
Message-ID: | 200907151638.13780.guillaume@lelarge.info |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgadmin-support |
Hi,
Le mercredi 15 juillet 2009 à 14:04:27, Quan Zongliang a écrit :
> [...]
> I ceate some pointers with:
>
> SQLWCHAR** stmtlabels = m_srcodbc->GetResultColLabels();
> m_curstmtlabels = new SQLWCHAR*[m_curstmtcolsnum];
> for (colidx=0; colidx<m_curstmtcolsnum; colidx++)
> if (stmtlabels[colidx])
> {
> m_curstmtlabels[colidx] = new
> SQLWCHAR[wcslen(stmtlabels[colidx])+1]; wcscpy(m_curstmtlabels[colidx],
> stmtlabels[colidx]);
> }
> else
> m_curstmtlabels[colidx] = NULL;
>
> delete them with:
>
> if (m_curstmtlabels)
> {
> SQLSMALLINT colidx;
> for (colidx=0; colidx<m_curstmtcolsnum; colidx++)
> if (m_curstmtlabels[colidx])
> delete[] m_curstmtlabels;
> }
>
> When delete pointers, the first loop is ok.
> But the sencond loop get a crash.
> It seems the first loop delete second array too.
> How to correct it?
>
Shouldn't you do this?
if (m_curstmtlabels)
{
SQLSMALLINT colidx;
for (colidx=0; colidx<m_curstmtcolsnum; colidx++)
if (m_curstmtlabels[colidx])
delete m_curstmtlabels[colidx];
}
BTW, it would have been better on pgadmin-hackers :)
> BTW:
> wcscpy, wcscmp, wcslen ... functions can be supported by all platforms?
>
I suppose so, but I'm not really sure.
--
Guillaume.
http://www.postgresqlfr.org
http://dalibo.com
From | Date | Subject | |
---|---|---|---|
Next Message | Quan Zongliang | 2009-07-15 22:37:55 | Re: I need help, about c++ pointer |
Previous Message | Guillaume Lelarge | 2009-07-15 14:31:15 | Re: forgot my password |