スタックはスタック、スタックはスタック

7580 ワード

   ,   



         ,       :



  :    :   ,   。



  :   “  ”      ,      !



  :                 ,         。



【1】       



(1)      



   C/C++                  



<1>  (stack)—           ,        ,       。



<2>  (heap) —              ,       ,        OS  。          :newmallocdelete、free  。



<3>   (   )(static)—                  ,                  ,                            。           



<4>      —            。          



<5>     —           。



(2)    



    ,       ,    ,    。  。





 1 int   a = 0; //      

 2 char  *p1;   //       

 3 void main( )

 4 {

 5     int b; // 

 6     char s[] = "abc"; // 

 7     char *p2; // 

 8     char *p3 = "123456"; //123456\0    ; p3   。

 9     static int c =0//  (  )    

10     char *p1 = (char *)malloc(10);

11     char *p2 = (char *)malloc(20);

12     //     10 20         。

13     strcpy(p1,"123456"); //123456\0     ,         p3    "123456"       。

14 }



【2】        



(1)       



 (heap)  (stack)                           。



(2<1>    



stack:



       。   :             int b;         b    。



heap:



         ,     , c malloc  



 char *p1 = (char *)malloc(10);



 C++  new   



 char *p2 = new char[10];



  ,  p1、p2          。



<2>        



 :



               ,          ,           。



 :



                        ,           ,      ,                  ,



                ,             。



  ,       ,                       ,      delete              。



  ,                       ,                      。



<3>       



 :



 Windows ,             ,           。



                            ,  WINDOWS ,     2M(     1M,              ),



                ,   overflow。  ,          。



 :



             ,         。                     ,       ,



                 。                    。



    ,          ,    。



<4>       



 :



       ,    。          。



 :



  new     ,       ,          ,        。



  , WINDOWS ,       VirtualAlloc    ,     ,     ,



                  ,         。     ,    



<5>         



 :



      ,                  (               )   ,



          ,     C    ,          ,           。           。



          ,       ,     ,               ,             ,         。



 :



                   。             。



<6>       



1 char s1[] = "aaaaaaaaaaaaaaa";

2 char *s2 = "bbbbbbbbbbbbbbbbb";

3 //aaaaaaaaaaa             ;

4 // bbbbbbbbbbb           ;

  ,       ,                (   ) 。