Dynamic C-style arrays

C-style arrays are a legacy topic, but they are still worth discussing since even though they are old, you might still see them used sometimes.

The way we declare a C-style array is as follows:

#include <iostream>
using namespace std;
int main()
{
  cout << "How big?" << endl;
  int size;       // try and use a variable for size..
  cin >> size;
  // the next line will look weird..
  int *array = (int*)malloc( size*sizeof(int) ); // C-style
  // fill the array and print
for( int index = 0; index < size; index++ )
  {
    array[ index ] = index * 2;
    cout << array[ index ] << endl;
  }
free( array ); // must call free() on array allocated with 
               // malloc() (not delete[]!)
}

The differences here are highlighted.

A C-style array is created using the malloc() function. The word malloc stands for "memory allocate". This function requires you to pass in the size of the array in bytes to create and not just the number of elements you want in the array. For this reason, we multiply the number of elements requested (size) by sizeof of the type inside the array. The size in bytes of a few typical C++ types is listed in the following table:

C++ primitive type

sizeof (size in bytes)

int

4

float

4

double

8

long long

8

Memory allocated with the malloc() function must later be released using free().

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
18.118.144.248