I am expecting NULL pointer exception but I am getting output 222. How is this working.
int main()
{
int *p = (int*)malloc(0);
*p = 222;
cout << *p;
return 0;
}
I am expecting NULL pointer exception but I am getting output 222. How is this working.
int main()
{
int *p = (int*)malloc(0);
*p = 222;
cout << *p;
return 0;
}
The behaviour of your program is undefined.
The behaviour of malloc
with 0 passed is implementation defined: it can return 0 or a pointer. If it returns a pointer, then you must pass that pointer to free
, but you must not deference that pointer.
C and C++ do not differ in this respect.
I am expecting NULL pointer exception
Your expectation is misguided.
Firstly, malloc
is not guaranteed to retrurn a null pointer when allocating 0 size.
Secondly, indirecting a null pointer (or any pointer returned by malloc(0)
) is not guaranteed to cause an exception. Instead the behaviour is undefined.