I am trying to use memset to set a dynamic array of size rownum x rownmum. However, when I call the showarr function as shown below, instead of getting the output of all zeros (i.e. ASCII 48), I am getting random/garbage values.
void showarr(int **a, int rownum)
{
for ( int i = 0; i < rownum; i++) {
for ( int j = 0; j < rownum; j++) {
cout<<a[i][j]<<endl;
}
}
}
int main(int argc, char *argv[])
{
int n;
cin>>n;
int rownum;
cin>>rownum;
int **a = new int* [rownum] ;
for ( int i = 0; i <rownum; i++) {
a[i] = new int[rownum];
}
for (int i = 0; i < rownum; i++) {
memset(a[i],48,sizeof(a[i]));
}
showarr(a,rownum);
return 0;
}
sizeof(a) == size(int **), meaning either 4 or 8 bytes, depending on your processor.sizeof(a[i])sizeoflike you try to do only works on explicit arrays (i.e. variables declared likeint a[10]).