Return Styles: Pseud0ch, Terminal, Valhalla, NES, Geocities, Blue Moon. Entire thread

The problem with stackoverflow.com

Name: Anonymous 2010-06-06 7:54

And most other programming communities, really. (♥ /prog/)

http://stackoverflow.com/questions/2425728/delete-operator-in-c/
Question:: What is the difference between delete and delete[] operators in C++?

stackoverflow.com answer:
The delete[] operator is used to delete arrays. The delete operator is used to delete non-array objects. It calls operator delete[] and operator delete function respectively to delete the memory that the array or non-array object occupied after (eventually) calling the destructors for the array's elements or the non-array object.

The following shows the relations:

typedef int array_type[1];

// create and destroy a int[1]
array_type *a = new array_type;
delete [] a;

// create and destroy an int
int *b = new int;
delete b;

// create and destroy an int[1]
int *c = new int[1];
delete[] c;

// create and destroy an int[1][2]
int (*d)[2] = new int[1][2];
delete [] d;


For a new that creates an array (so, either the new type[] or new applied to an array type construct), the Standard looks for a operator new[] in the array's element type class or in the global scope, and passes the amount of memory requested. It may request more than N * sizeof(ElementType) if it wants (for instance to store the number of elements, so it later when deleting knows how many destructor calls to done). If the class declares an operator new[] that additional to the amount of memory accepts another size_t, that second parameter will receive the number of elements allocated - it may use this for any purpose it wants (debugging, etc...).

For a new that creates a non-array object, it will look for a operator new in the element's class or in the global scope. It passes the amount of memory requested (exactly sizeof(T) always).

For a delete[], it looks into the arrays' element class type and calls their destructors. The operator delete[] function used is the one in the element type's class, or if there is none then in the global scope.

For a delete, if the pointer passed is a base class of the actual object's type, the base class must have a virtual destructor (otherwise, behavior is undefined). If it is not a base class, then the destructor of that class is called, and a operator delete in that class or the global operator delete is used. If a base class was passed, then the actual object type's destructor is called, and the operator delete found in that class is used, or if there is none, a global operator delete is called. If the operator delete in the class has a second parameter of type size_t, it will receive the number of elements to deallocate.


Proper answer: The delete[] operator is used to delete arrays. The delete operator is used to delete non-array objects. Look it up in the documentation/FAQ/textbook/google.

Name: Anonymous 2010-06-06 18:36

>>30
Cool trollan, bro.

Oh, so it's about being easier to type now?
It's always about being easier to use. That's the only significant difference between Python and C and Haskell and COBOL and Sepples and Java.

What about being easier to make mistakes?
What about it? You haven't actually demonstrated that it's easier to make mistakes in SexpCode than in your knock-off. Since every modifier key that needs to be pressed increases the odds of typos, I'd say the advantage here isn't with your language.

I'm glad you picked [b]. Let's have a look at some CSS.
Your suggestion would violate the user's expectations of how bold text works. BBCode doesn't work like that, Markdown doesn't work like that, and if you weren't grasping at straws and actually got off your ass to make your knock-off work, your language wouldn't work like that either.

You might as well twist it so that it appears that I am.
Do you know what analogy is?

He didn't really need to. BBCode works just fine.
Pretty much everyone disagrees. Just look at the amount of BBCode failures right here in the Mecca of BBCode mastery to see how inadequate BBCode is.

This just appears to be a hobby project.
So?

This one's pure gold. Are you implying jealously?
It oozes from your every word. If you were motivated by anything else, you'd actually try to engage in constructive criticism instead of just waving your arms and spouting bullshit.

It's also my bedtime.
Sweet dreams.

Newer Posts
Don't change these.
Name: Email:
Entire Thread Thread List