Returning a dynamically created array from function

Posted by informer2000 on Stack Overflow See other posts from Stack Overflow or by informer2000
Published on 2010-03-20T20:31:44Z Indexed on 2010/03/20 20:41 UTC
Read the original article Hit count: 116

Filed under:
|

I'm trying to create a function that would dynamically allocate an array, sets the values of the elements, and returns the size of the array. The array variable is a pointer that is declared outside the function and passed as a parameter. Here is the code:

#include <cstdlib>  
#include <iostream>  
using namespace std;  

int doArray(int *arr) {  
    int sz = 10;  
    arr = (int*) malloc(sizeof(int) * sz);  

    for (int i=0; i<sz; i++) {  
        arr[i] = i * 5;  
    }  

    return sz;  
}  

int main(int argc, char *argv[]) {  

    int *arr = NULL;  
    int size = doArray(arr);  

    for (int i=0; i<size; i++) {  
        cout << arr[i] << endl;  
    }  

    return 0;  

}  

For some reason, the program terminates on the first iteration of the for loop in main()! Am I doing something wrong?

© Stack Overflow or respective owner

Related posts about c++

Related posts about gcc