더미 와 창고 의 차이 (메모리 와 데이터 구조)

17407 단어



, , C 。 , 。 : 、 , , 。

, , : 。




, , 。 ( ), ( )。


。 , 。 ( ), 。 , , , , , , , , 。




C , , Rom Flash , , , :



。 , ; ; 。



main.cpp
int a = 0;
char *p1;
main()
{
int b;
char s[] = "abc";
char *p2;
char *p3 = "123456"; 123456\0 ,p3 。
static int c =0; ( )
p1 = (char *)malloc(10);
p2 = (char *)malloc(20);
}

0.
( stack) , char a; 。 ( heap) , malloc(10); 。 , , , 。 , , 。 :

1.

: , , 。

: , , , 。

, , , , , , , delete 。 , , 。


2.
0 1 。

: , 。 。

: new , , , 。

3.
 : Windows ,             ,           。                            ,  WINDOWS ,     2M(     1M,              ),                ,   overflow。  ,          。  
: , 。 , , 。 。

4.
, , 。

: , ( ) , , C , , 。
, , , , , 。
: 。

。 。

5.
char s1[] = "aaaaaaaaaaaaaaa";  
char *s2 = "bbbbbbbbbbbbbbbbb";
aaaaaaaaaaa ; 。
bbbbbbbbbbb ; 。
, , ( ) 。

#include
void main()
{
char a = 1;
char c[] = "1234567890";
char *p ="1234567890";
a = c[1];
a = p[1];
return;
}

10: a = c[1];
00401067 8A 4D F1 mov cl,byte ptr [ebp-0Fh]
0040106A 88 4D FC mov byte ptr [ebp-4],cl
11: a = p[1];
0040106D 8B 55 EC mov edx,dword ptr [ebp-14h]
00401070 8A 42 01 mov al,byte ptr [edx+1]
00401073 88 45 FC mov byte ptr [ebp-4],al



, ( )、 、 ( ), , 、 、 , , 。
, , ,

좋은 웹페이지 즐겨찾기