C++メモリ割当て


  C++    ,            delete  ,  
int * pi = new int(100);
*pi++;
delete pi;
, , ?? :
char * ReversString(const char * str)
{
int length = strlen(str);
char * result = new char[length];
for(int i = 0; i < length; i++)
{
result[i] = str[length - 1 - i];
}

return result;
}
result , ?delete return ,delete return
。。。 delete 。。。




C/C++ , 。 , , , , 。

, 。 , : 、 。
, ?
, 。 ? 。 , :
----------------------------
/* ReversString , */ 《== , 。
char * ReversString(const char * str);

char *p1 = "abc";
char *p2 = ReversString(p1); // , p2;
printf(p2); //
delete p2; // , 。
----------------------------
, , ,“ ”。 , :
, ; , ,
; , 。
, , ,
。 , 。

, ?
: , 。 , :
------------------------------
char * ReversString(const char * str, char * result) // result 。 ,

{
int length = strlen(str);
for(int i = 0; i < length; i++)
{
result[i] = str[length - 1 - i];
}

return result;
}
------------------------------
, 。 , 。
, 。
, ? :
, 。 , , :
------------------------------------
char* ReversString(const char * str, (char *)& result)
{
assert(result==0); // result 0。
int length = strlen(str);
result = new char[length];
for(int i = 0; i < length; i++)
{
result[i] = str[length - 1 - i];
}

return result;
}
------------------------------------
, C++ , ,
, , 。 ,
, , , , 。

C++ , 2 3 ;
, , ,
1 , 。