У меня есть функция, которая передает 2d массив в качестве аргумента другой функции. 2d массив передается как int **.
Функция вызова:
bool isMatch(string s, string p)
{
int **dp;
int* a[s.size()];
dp = a;
for(int i=0;i<s.size();i++)
{
int b[p.size()];
dp[i] = b;
}
for(int i=0;i<s.size();i++)
{
for(int j=0;j<p.size();j++)
{
dp[i][j] = -1;
}
}
cout<<dp[0][0]<<endl;
return test(s,p,dp);
}
Функция вызова:
bool test(string s,string p,int **dp)
{
cout<<dp[0][0]<<endl;
return true;
}
Теперь, когда я печатаю дп [0] [0] в isMatch () выводится функция -1, которая является ожидаемым значением. Но когда я передаю 2d массив другой функции (т.е. test ()) и печатаю dp [0] [0], я получаю случайные значения, такие как 950192880, 337836240 и др. c. Почему происходит это событие, хотя все передается по ссылке, а стек не очищается до тех пор, пока не будет завершена функция вызова?