This is the talk page for discussing improvements to the Delete (C++) redirect. This is not a forum for general discussion of the article's subject. |
Article policies
|
Find sources: Google (books · news · scholar · free images · WP refs) · FENS · JSTOR · TWL |
This redirect does not require a rating on Wikipedia's content assessment scale. It is of interest to the following WikiProjects: | |||||||||||||||||||||||||||
|
using the wrong delete is a vulnerability
editThe last paragraph is too hairy, I don't want too touch it, but it should explain that using the wrong delete is a security vulnerability, linking to: http://replay.web.archive.org/20080703153358/http://taossa.com/index.php/2007/01/03/attacking-delete-and-delete-in-c —Preceding unsigned comment added by 99.224.97.6 (talk) 18:00, 14 May 2011 (UTC)
NULL vs. 0
editI recently made an edit to initialize pointers in the code snippets with NULL
instead of 0. The "edit summary" field was insufficient for explaining my justification for doing so and several previous edits changed NULL to 0 with the following vague and nebulous justifications:
"int *p_var = NULL" is still valid C++ syntax, but is very C-style, making it equal zero is more C++
Changed NULL to 0, although null is same as 0, it should be avoided.
Frankly, neither of these are good reasons. NULL
is no less "C++ style" (whatever that is) than int
, the ++
operator, or for
. And there is no indication as to why NULL
should be avoided. The only reason to avoid using NULL
is, as Bjarne Stroustrup explains, to avoid macros whenever possible (http://www.stroustrup.com/bs_faq2.html#null). However, this rational is purely a matter of personal preference and NULL
is part of the C++ standard. Using NULL
instead of 0 produces more self-documenting code (i.e., when manipulating a pointer value, setting it to NULL
indicates to a human reader that the variable is a pointer without needing to reference the declaration). This is driven home by the fact that C++11 defines nullptr
(of course, if you're writing to the C++11 standard, nullptr
would be much preferred to NULL
). Also, if you're using the GCC C++ compiler (I don't know about other compilers) NULL
is #define NULL __null
which means the compiler will always understand the rvalue to be a pointer value (http://gcc.gnu.org/onlinedocs/libstdc++/manual/bk01pt02ch04s03.html). 71.65.94.23 (talk) 03:45, 26 October 2012 (UTC)