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;

}