Difference between delete and delete[]?
Answers were Sorted based on User's Feedback
Answer / sachin mahajan
When we want to free a memory allocated to a pointer to an
object then "delete" is used.
Ex
int * p;
p=new int;
// now to free the memory
delete p;
But when we have allocated memory for array of objects like
int * p= new int(10); //pointer to an array of 10 integer
then to free memory equal to 10 integers
delete []p;
NOTE: One can free the memory even by "delete p;" But it
will free only the first element memory.
| Is This Answer Correct ? | 70 Yes | 9 No |
Answer / laxman
delete is only just to delete a variable which is created
by new operator. delete[] , it deletes the array where the
varaialbe points .
| Is This Answer Correct ? | 24 Yes | 8 No |
Answer / vikas
If p is pointer to an array and is allocated memory on
heap, then delete p would call the destructor of the first
element but will free up the whole block. More info at:
http://www.cppquestions.com/viewtopic.php?f=27&t=13
| Is This Answer Correct ? | 14 Yes | 5 No |
Answer / namitha
delete is a function used to deallocate the storage space.
delete[] is a function used to deallocate the storage space
of an array.
| Is This Answer Correct ? | 11 Yes | 8 No |
Answer / sunita shukla
Delete p deallocate memory pointed to by p and delete []p deallocate array. But delete p will delete only p[0]. Other array's Size-1 entries will not be deleted and this memory will leak.
| Is This Answer Correct ? | 3 Yes | 0 No |
Write about the stack unwinding?
What is the difference between *p++ and (*p)++ ?
What is the basic structure of c++ program?
Is there any function that can skip certain number of characters present in the input stream?
Are vectors passed by reference c++?
What are the manipulators in c++?
What is the difference between the functions memmove() and memcpy()?
1)#include <iostream.h> int main() { int *a, *savea, i; savea = a = (int *) malloc(4 * sizeof(int)); for (i=0; i<4; i++) *a++ = 10 * i; for (i=0; i<4; i++) { printf("%d\n", *savea); savea += sizeof(int); } return 0; } 2)#include <iostream.h> int main() { int *a, *savea, i; savea = a = (int *) malloc(4 * sizeof(int)); for (i=0; i<4; i++) *a++ = 10 * i; for (i=0; i<4; i++) { printf("%d\n", *savea); savea ++; } return 0; } The output of this two programs will be different why?
Will this c++ program execute or not?
What is class invariant?
What is the use of this pointer in c++?
Are strings mutable in c++?