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

By submitting your information, you agree that devx.com may send you DevX offers via email, phone and text message, as well as email offers about other products and services that DevX believes may be of interest to you. DevX will process your information in accordance with the Quinstreet Privacy Policy.


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

WEBINAR:

On-Demand

Application Security Testing: An Integral Part of DevOps


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
×
We have made updates to our Privacy Policy to reflect the implementation of the General Data Protection Regulation.
Thanks for your registration, follow us on our social networks to keep up-to-date