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 -- Sent via pgadmin-support mailing list (pgadmin-support@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgadmin-support