![]() |
| ||
| type casting what happened if we do't typecast return value of malloc like that int *a=malloc(10); |
| ||
| Re: type casting |
| ||
| Re: type casting Most compilers will complain because malloc() returns void* and, in C++, you need to cast void* to the type you are mallocing. Generally, you should use 'new' and 'delete' rather than malloc, for at least these three good reasons: 1) You don't need to cast 2) As Dave pointed out, malloc(10) allocates 10 BYTES, not 10 ints 3) Constructors are not called. Not a big deal with ints, but a huge deal with objects. In this case, int* a = new int[10]; delete [] a; note the need for [] in the delete; if you used [] in new, use them in delete. |
| ||
| Re: type casting Using C memory allocation routines in C++ programs is BAD FORM. |
| ||
| Re: type casting >int *a = malloc(10 * sizeof *a); Quote:
I see nothing in the original post that suggests either C++ or C. As the answer is directly related to the language, don't you three think it makes sense to ask before going off on your favorite tangent? >what happened if we do't typecast return value of malloc In C, nothing because pointers are implicitly converted to and from void without the need for a cast. In fact, it is best to avoid the cast in C because it hides errors. In C++, you would get a compile-time error because C++ does not bless implicit pointer conversions to and from void. A cast is required, but it's better to use new in C++ for several reasons that I won't mention because that wasn't your question. |
| All times are GMT -4. The time now is 7:16 am. |
Forum system based on vBulletin Copyright ©2000 - 2009, Jelsoft Enterprises Ltd.
©2003 - 2009 DaniWeb® LLC