Dynamic Memory Allocation
Define large arrays that cause memory overflow?
1. 1D array
int *array = new int [M];
delete [] array;
2. 2D array
to define and use int array[M][N]
#include <iostream>
//dynamic allocation
int **array = new int*[M];
for(int i = 0; i < M; ++i) array[i] = new int[N];
// free the memory
for(int i = 0; i < M; ++i) delete [] array[i];
delete [] array;
3. declare global (extern) 1D and 2D array
"system.h"
#include <stdio.h>
typedef struct
{
double x;
double y;
double z;
} VECTOR;
extern VECTOR *array;
extern int **matrix;
"system.c"
#include <iostream>
#include "system.h"
VECTOR *array = new VECTOR [M];
int **matrix = new int *[M];
"main.c"
int main()
{
for(int i = 0; i < M; ++i) matrix[i] = new int[N];
delete [] array;
for(int i = 0; i < M; ++i) delete [] matrix[i];
delete [] matrix;
return 0;
}