What is the correct syntax in C++ to initialise and alter a 2D integer array declared using int** ?
I am using the code below, but I get unexpected behaviour due to memory being de-allocated upon function exit, which is of course what it's meant to do.
But, how can this be done neatly in C++? I know others have faced similar issues but questions such as Is passing pointer argument, pass by value in C++? is too general.
void Insert_into_2D_Array(int** foo, int x_pos, int y_pos, int x_size, int y_size)
{
int insert_value = 10;
if (x_pos < x_size && y_pos < y_size) {
foo[x_pos][y_pos] = insert_value; // insert_value lost post func exit?
}
}
void Init_2D_Array(int** foo, int x_size, int y_size)
{
foo = new int*[x_size]; // new alloc mem lost post func exit ?
for (int i=0;i<x_size;i++)
{
foo[i] = new int[y_size]; // new alloc mem lost post func exit
}
}
int main(int agc, char** argv)
{
int** foo;
int x_size=10, y_size=10;
Init_2D_Array(foo, x_size, y_size);
Insert_into_2D_Array(foo, 3,3, x_size, y_size);
}