Igo*_*gor 0 c++ pointers smart-pointers c++11
这是我的分配:
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];
}
Run Code Online (Sandbox Code Playgroud)
这是我的删除:
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;
}
Run Code Online (Sandbox Code Playgroud)
代码是否正常?我可能应该只使用智能指针,但我不知道代码将如何与它们一起使用?因此,如果您投入智能指针代码,将非常感激.这些指针在线程函数中本地使用,不与任何东西共享.
我担心第二个循环需要delete而不是delete[].
TIA!
你不应该在这里使用指针.
using SQLSTRING = std::basic_string<SQLWCHAR>;
struct Column
{
SQLSTRING Name;
SQLSTRING Data;
SQLSMALLINT DataType;
SQLULEN DataSize;
SQLSMALLINT DataDigits;
SQLSMALLINT DataNullable;
}
std::vector<Column> columns(numCols);
Run Code Online (Sandbox Code Playgroud)