C++ 指针和 table
C++ pointers and table
我正在学习 C++,我想编写一个使用指针分配 2D table 的程序。这是我的代码:
bool b_alloc_table_2_dim(int ***piTable, int iSizeX, int iSizeY)
{
if ((iSizeX && iSizeY) > 0)
{
*piTable = new int* [iSizeX];
for (int i = 0; i < iSizeX; i++)
(*piTable)[i] = new int[iSizeY];
return true;
}
else return false;
}
bool b_dealloc_table_2_dim(int **piTable, int iSizeX)
{
if (iSizeX > 0)
{
for (int i = 0; i < iSizeX; i++)
delete[] piTable[i];
delete[] piTable;
return true;
}
else return false;
}
分配 table 后,我想取消分配它。我遇到了这个问题“HEAP[TEP_Lab1.exe]:指定给 RtlValidateHeap(00DB0000, 00DB5B68) 的地址无效”。我不知道如何解决这个问题。
请帮忙!
int main()
{
int** piTable;
b_alloc_table_2_dim(&piTable, 5, 3);
b_dealloc_table_2_dim(piTable, 5);
}
这个例子很适合你:
int **dynamicArray = 0;
dynamicArray = new int *[ROWS];
// memory allocated for elements of each column.
for( int i = 0 ; i < ROWS ; i++ ) {
dynamicArray[i] = new int[COLUMNS];
}
// free the allocated memory
for( int i = 0 ; i < ROWS ; i++ ) {
delete [] dynamicArray[i];
}
delete [] dynamicArray;
现在您的更正代码是
bool b_alloc_table_2_dim(int **piTable, int iSizeX, int iSizeY)
{
if ((iSizeX && iSizeY) > 0)
{
piTable = new int* [iSizeX];
for (int i = 0; i < iSizeX; i++)
piTable[i] = new int[iSizeY];
return true;
}
else return false;
}
bool b_dealloc_table_2_dim(int **piTable, int iSizeX)
{
if (iSizeX > 0)
{
for (int i = 0; i < iSizeX; i++)
delete[] piTable[i];
delete[] piTable;
return true;
}
else return false;
}
int main()
{
int** piTable;
b_alloc_table_2_dim(piTable, 5, 3);
b_dealloc_table_2_dim(piTable, 5);
}
我正在学习 C++,我想编写一个使用指针分配 2D table 的程序。这是我的代码:
bool b_alloc_table_2_dim(int ***piTable, int iSizeX, int iSizeY)
{
if ((iSizeX && iSizeY) > 0)
{
*piTable = new int* [iSizeX];
for (int i = 0; i < iSizeX; i++)
(*piTable)[i] = new int[iSizeY];
return true;
}
else return false;
}
bool b_dealloc_table_2_dim(int **piTable, int iSizeX)
{
if (iSizeX > 0)
{
for (int i = 0; i < iSizeX; i++)
delete[] piTable[i];
delete[] piTable;
return true;
}
else return false;
}
分配 table 后,我想取消分配它。我遇到了这个问题“HEAP[TEP_Lab1.exe]:指定给 RtlValidateHeap(00DB0000, 00DB5B68) 的地址无效”。我不知道如何解决这个问题。 请帮忙!
int main()
{
int** piTable;
b_alloc_table_2_dim(&piTable, 5, 3);
b_dealloc_table_2_dim(piTable, 5);
}
这个例子很适合你:
int **dynamicArray = 0;
dynamicArray = new int *[ROWS];
// memory allocated for elements of each column.
for( int i = 0 ; i < ROWS ; i++ ) {
dynamicArray[i] = new int[COLUMNS];
}
// free the allocated memory
for( int i = 0 ; i < ROWS ; i++ ) {
delete [] dynamicArray[i];
}
delete [] dynamicArray;
现在您的更正代码是
bool b_alloc_table_2_dim(int **piTable, int iSizeX, int iSizeY)
{
if ((iSizeX && iSizeY) > 0)
{
piTable = new int* [iSizeX];
for (int i = 0; i < iSizeX; i++)
piTable[i] = new int[iSizeY];
return true;
}
else return false;
}
bool b_dealloc_table_2_dim(int **piTable, int iSizeX)
{
if (iSizeX > 0)
{
for (int i = 0; i < iSizeX; i++)
delete[] piTable[i];
delete[] piTable;
return true;
}
else return false;
}
int main()
{
int** piTable;
b_alloc_table_2_dim(piTable, 5, 3);
b_dealloc_table_2_dim(piTable, 5);
}