Это мое распределение:
for (int i = 0; i < numCols; i++)
{
columnNameLen = new SQLSMALLINT *[numCols];
columnDataType = new SQLSMALLINT *[numCols];
columnDataSize = new SQLULEN *[numCols];
columnDataDigits = new SQLSMALLINT *[numCols];
columnDataNullable = new SQLSMALLINT *[numCols];
columnData = new SQLWCHAR *[numCols];
columnDataLen = new SQLLEN *[numCols];
columnName = new SQLWCHAR *[numCols];
}
for (int i = 0; i < numCols; i++)
{
columnNameLen[i] = new SQLSMALLINT;
columnDataType[i] = new SQLSMALLINT;
columnDataSize[i] = new SQLULEN;
columnDataDigits[i] = new SQLSMALLINT;
columnDataNullable[i] = new SQLSMALLINT;
columnDataLen[i] = new SQLLEN;
columnName[i] = new SQLWCHAR[256];
}
И это мое удаление:
for (int i = 0; i < numCols; i++)
{
delete columnNameLen[i];
columnNameLen[i] = NULL;
delete columnDataType[i];
columnDataType[i] = NULL;
delete columnDataSize[i];
columnDataSize[i] = NULL;
delete columnDataDigits[i];
columnDataDigits[i] = NULL;
delete columnDataNullable[i];
columnDataNullable[i] = NULL;
delete columnData[i];
columnData[i] = NULL;
delete columnDataLen[i];
columnDataLen[i] = NULL;
delete[] columnName[i];
columnName[i] = NULL;
}
for (int i = 0; i < numCols; i++)
{
delete[] columnNameLen;
columnNameLen = NULL;
delete[] columnDataType;
columnDataType = NULL;
delete[] columnDataSize;
columnDataSize = NULL;
delete[] columnDataDigits;
columnDataDigits = NULL;
delete[] columnDataNullable;
columnDataNullable = NULL;
delete[] columnData;
columnData = NULL;
delete[] columnDataLen;
columnDataLen = NULL;
delete[] columnName;
columnName = NULL;
}
Код выше?Я, вероятно, должен просто использовать умные указатели, но я не знаю, как будет выглядеть код с ними?Так что, если вы добавите код смарт-указателя, это будет с благодарностью.Эти указатели используются локально в функции потока и ни с кем не делятся.
Боюсь, что для второго цикла нужно всего лишь delete
, а не delete[]
.
TIA!