int main() { using std::cout; int *p= new int; *p = 10; cout<<*p<<"\t...">

Does "delete pointer" simply mean "* pointer = 0"?

# include <iostream>

int main()  
{  
using std::cout;
int *p= new int;

*p = 10;
cout<<*p<<"\t"<<p<<"\n";
delete p;
cout<<*p<<"\t"<<p<<"\n";

return 0;

}

Output:
10 0x237c010
0 0x237c010

Here, after removing p, why does the pointer p keep its value? Doesn't delete free pointer p?
What exactly does "free pointer" mean?
"Delete p" just means "* p = 0"? (What seems to be the output)

+5
source share
5 answers

Here, after removing p, why does the pointer p keep its value?

. , , , , . p - , /, .

p?

(, ). (delete[]), , .

" "?

, (, new). , free/delete. , . , ( ).

+6

, , , . .

. - , . , - . - , . , , "".

( , , , ). , .

new int . -, : " , int". , : , int.

int. , , , , , , . .

new int does - int. , (new int(5) 5).

int . int. : , .

delete p, . -, p . , int, . , .

delete : ", : int, ? ". , . , , debug-builds. - .

, , , , , , , . int, . , , , . .

, , . , . delete p, p :

!

, new int. . , new delete.

, ?

delete p;
cout << *p << "\t" << p << "\n";

++ " undefined". ++ , , , "undefined". undefined , ! *p 0. *p , . *p .

++ - /. , , , . "undefined " - , , , -, ++, . .

delete p, , p. , . - , , . . . - .

. .

, , delete p *p = 0. " 0 , p". , " , p, , , , ".

+2

, p, p ? p?

, ( ). .

" "?

- , .

" p" "* p = 0"? ( )

. , -, 0. , , , - , , . , - ( , , delete ). , , , , .

, , "" . ( ). , NULL 0 , , . , , , .

, , shared_ptr unique_ptr.

+1

delete p , new. .

0

( , , , .)

, "int * p = new int"; int . "delete p;" . 30 , , 30 int . new, 30 , ( ) int. , , , delete, .

TL;DR; , , .

0

All Articles