You are viewing a single comment's thread. Return to all comments →
wow. thats pretty smart can you tell me where you learned it or walk me through your though proccess for
int *A = new int[N];
thats for dynamically allocating memory ie it adjusts its size according to the input during runtime
how different is it from the "malloc"?
malloc() is a function in C, and New is for C++
what is it mean by *A=new int[N]? why new keyword used? and what will happen by this expression?
not sure why people just downvote an honest question instead of responding with an answer - everyone is here to learn.
"As a rule of thumb, C++ pointers should only refer to objects allocated wth new."
you can read here for more explanation:
Section A3.8. Pointers
So basically, the 'new' operator will return a address (what a pointer stores) to the heap-allocated contiguous memory block, a.k.a. 'array' of ints, thus ".... new int[n]", where n = 10 would return the beginning address of the contiguous memory block(s).
(which in total would usually be 10 * 4 bytes(sizeof(int)) )
The reason you would use a heap-allocated block of contiguous memory a.k.a. 'array', is because you do NOT know the exact number representing the size of the array at COMPILE TIME.
So basically std::cin >> n; int* A = new int[n]; -> here 'n' will be known at RUNTIME, when the user interacts with the program and enters some number.
BUT! Performing calculations also based on non-const/already known values and using the result as the array size will not work either...
Depending on the compiler, but in GCC using g++, try doing all this with a stack allocated array - it MIGHT let you, and then try it with the -pedantic-errors flag and the compiler WON'T let you do such stuff...
std::cin >> n; int* A = new int[n];
So basically when you DO NOT KNOW the size of an array beforehand (like a hard-coded value '10' for example, or a const int or so) - use heap-allocated arrays!