Still celebrating National IT Professionals Day with 3 months of free Premium Membership. Use Code ITDAY17

x
Solved

# How to use "free"?

Posted on 2000-04-24
Medium Priority
171 Views
Hello experts,

I use malloc to allocate array,
eg. int *a; a = malloc(10);

how can I use "free" to free it?
how if a is a 2D array?
0
Question by:pigpig
[X]
###### Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

• Help others & share knowledge
• Earn cash & points
• 8
• 2

LVL 1

Accepted Solution

cdepetris earned 200 total points
ID: 2745730
you would just use
free(a);

however you only allocated

so to malloc a 2d array you would use
// allocate a[2][5]
int *a = (int*)malloc(5 * 2 * sizeof(int));

and to free it just call
free(a);

Chris
0

Author Comment

ID: 2745746
> so to malloc a 2d array you would use
> // allocate a[2][5]
> int *a = (int*)malloc(5 * 2 * sizeof(int));

How do I know if I am allocating size of 10 or 2x5?

also, after calling "free", the memory address of that address will go to "0x000000"? if not, is it means the "free" is failed?

Thanks a lot!
0

LVL 22

Expert Comment

ID: 2745748
You should not be using malloc and free in C++.  they only time it makes sense to use them is when you are writing overloaded new and delete operators.  Other than that, you should be using new and delete.
0

Author Comment

ID: 2745750
> so to malloc a 2d array you would use
> // allocate a[2][5]
> int *a = (int*)malloc(5 * 2 * sizeof(int));

How do I know if I am allocating size of 10 or 2x5?

also, after calling "free", the memory address of that address will go to "0x000000"? if not, is it means the "free" is failed?

Thanks a lot!
0

Author Comment

ID: 2745756
nietod:

I also don't want to use "malloc and free", but it acts as some kinds of overloading delete and new.
0

Author Comment

ID: 2745759
nietod:

I also don't want to use "malloc and free", but it acts as some kinds of overloading delete and new.
0

Author Comment

ID: 2745765
nietod:

I also don't want to use "malloc and free", but it acts as some kinds of overloading delete and new.
0

Author Comment

ID: 2745776
nietod:

I also don't want to use "malloc and free", but it acts as some kinds of overloading delete and new.
0

Author Comment

ID: 2745781
nietod:

I also don't want to use "malloc and free", but it acts as some kinds of overloading delete and new.
0

LVL 1

Expert Comment

ID: 2745897
I agree with nietod you should not use malloc and free in c++, however
as for you questions
the pointer will not be set to 0x00000000 when you free the memory, that is up to you. Also it does not matter if you allocate out 10 * sizeof(int) or 2*5*sizeof(int) you can access it as a single dimesioned arrray a[10] or a 2d array a[2][5]. When you access say a[1][3] it is equivalent to a[8]

Chris
0

Author Comment

ID: 2911365
0

## Featured Post

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

C++ Properties One feature missing from standard C++ that you will find in many other Object Oriented Programming languages is something called a Property (http://www.experts-exchange.com/Programming/Languages/CPP/A_3912-Object-Properties-in-C.htâ€¦
This article shows you how to optimize memory allocations in C++ using placement new. Applicable especially to usecases dealing with creation of large number of objects. A brief on problem: Lets take example problem for simplicity: - I have a Gâ€¦
The goal of the video will be to teach the user the difference and consequence of passing data by value vs passing data by reference in C++. An example of passing data by value as well as an example of passing data by reference will be be given. Botâ€¦
The viewer will learn how to clear a vector as well as how to detect empty vectors in C++.
###### Suggested Courses
Course of the Month9 days, 3 hours left to enroll