Unhandled exception... Access violation writing location
c++
Solution
In your update you added this code:
C = (int**) new int*[m];
for(i=0;i<n;i++)
{
C[i]=new int[n];
}
The loop condition is incorrect. Instead of `i<n` you need `i<m`.
Your multiplication loop looks like this:
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
for(int k=0;k<l;k++)
{
sum =+ A[i][k]*B[k][j];
}
}
C[i][j]=sum;
}
The assignment `C[i][j]` is in the wrong block–the `[j]` array access is out-of-bounds.
It should be like this:
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
sum = 0;
for(int k=0;k<l;k++)
{
sum =+ A[i][k]*B[k][j];
}
C[i][j]=sum;
}
}
Note that I have initialised `sum` to 0 every time a new `j` loop is started. That corrects another error in your code.
It would be a lot better if you declared the variables with the tightest scope possible. Like this:
for(int i=0;i<m;i++)
{
for(int j=0;j<n;j++)
{
int sum = 0;
for(int k=0;k<l;k++)
{
sum =+ A[i][k]*B[k][j];
}
C[i][j]=sum;
}
}
Had you done that the compiler would have rejected your original placement of the assignment to `C[i][j]`.
Your `main` function should be declared like this:
int main()
and you should return a value from your `main()`.
Problem
I'm new to C++ and I'm trying to write a program that multiplies two arrays using double pointers. My code so far is: ``` #include <iostream> using namespace std; //multiplies two matrices A(mxl) and B(lxn) to produce C(mxn) int m,l,n; int **A, **B, **C; void main(void) { ``` ...user inputs m,l,n and allocates memory like this. ``` int i, j; //creates a new mxl array A= (int**) new int*[m]; for(i=0;i<m;i++) { A[i]=new int[l]; } //creates a lxn array B = (int**) new int*[l]; for(i=0;i<l;i++) { B[i]=new int[n]; } //creates a mxn array C = (int**) new int*[m]; for(i=0;i<n;i++) { C[i]=new int[n]; } int sum = 0; for(i=0;i<m;i++) { for(j=0;j<n;j++) { for(int k=0;k<l;k++) { sum =+ A[i][k]*B[k][j]; } } //cout<sum<<"\t"; ``` so far everything works fine. If I change this to just cout 'sum' then it returns all the correct elements of the array in the right order; it's when I try to put this value into the array that it returns an error message. ``` C[i][j]=sum; } } ``` I'm sure there's a much better way to multiply matrices together but I'm much more interested in knowing why this particular piece of code doesn't work; it looks very simple and I can't see where the error is coming from.