Will The Following Program Execute

  • 2 Mar, 2012

    Will the following program execute?void main(){void *vptr = (void *) malloc(sizeof(void));vptr++;}Answer1It will throw an error, as arithmetic operations cannot be performed on void pointers.Answer2It will not build as sizeof cannot be applied to void* ( error ?Unknown size? )Answer3How can it execute if it won?t even compile? It needs to be int main, not void main. Also, cannot increment a void *.Answer4According to gcc compiler it won?t show any error, simply it executes. but in general we can?t do arthematic operation on void, and gives size of void as 1Answer5The program compiles in GNU C while giving a warning for ?void main?. The program runs without a crash. sizeof(void) is ?1? hence when vptr++, the address is incremented by 1.Answer6Regarding arguments about GCC, be aware that this is a C++ question, not C. So gcc will compile and execute, g++ cannot. g++ complains that the return type cannot be void and the argument of sizeof() cannot be void. It also reports that ISO C++ forbids incrementing a pointer of type ?void*?.Answer7in C++voidp.c: In function `int main()?:voidp.c:4: error: invalid application of `sizeof? to a void typevoidp.c:4: error: `malloc? undeclared (first use this function)voidp.c:4: error: (Each undeclared identifier is reported only once for each function it appears in.)voidp.c:6: error: ISO C++ forbids incrementing a pointer of type `void*?But in c, it work without problems

    Comments Received:
    Please give your suggestions and feedback:

2009-2016 downloadmela.com. All rights reserved.