Login | Register   
LinkedIn
Google+
Twitter
RSS Feed
Download our iPhone app
TODAY'S HEADLINES  |   ARTICLE ARCHIVE  |   FORUMS  |   TIP BANK
Browse DevX
Sign up for e-mail newsletters from DevX


Tip of the Day
Language: C++
Expertise: Beginner
Jul 27, 1998

Dynamic memory allocation

Question:
How do you dynamically allocate memory for a two-dimensional array? This is what I had, and my g++ compiler didn't like it:

int **m;
m= new int [100][100];

Answer:
Yep. The following signifies a pointer to a pointer to an integer.


int **m;
A two-dimensional array is something very different. One problem is the way the compiler computes the address based on the value of the two array subscripts. To compute this address, the code multiplies the column subscript by the size of the data type. But it must multiply the row subscript by the size of the data type times the number of columns.

If the variable is declared simply as a pointer to a pointer, the compiler has no way to know how many columns there are in each row. So you must specify the number of columns in your declaration.

 int (*m)[100];
 m = new int[100][100];
The parenthases are required to distinguish the declaration from an array of 100 pointers to integers. Now you can declare your two-dimensional array, and the compiler won't complain because it knows how many columns for each row.
DevX Pro
 
Comment and Contribute

 

 

 

 

 


(Maximum characters: 1200). You have 1200 characters left.

 

 

Sitemap
Thanks for your registration, follow us on our social networks to keep up-to-date