#include "stdafx.h"
#include "stdio.h"
int *c1;
const *b1;
void fuzhi()
static int a=3;
// printf("%d\n",&a);
const int b=5;
printf("%d\n",&b);
b1=&b;
int c=6;
printf("%d\n",&c);
c1=&c;
int main(int argc, char* argv)
int i=1;
int *p;
//通過位址獲取值
// printf("%d\n",&i);
printf("%d\n",*(int *)1244996);
p=&i;
printf("%d\n",*p);
fuzhi();
//通過位址獲取
a的值,輸出為
3,說明
a還儲存著
printf("%d\n",*(int *)4345228);
// 通過位址獲取b,c
的值,輸出並不是和原來的一樣,說明b,
c被釋放了
printf("%d\n",*(int *)1244904);
printf("%d\n",*(int *)1244900);
//下面的輸出和上面的值一樣,說明上面兩句確實是獲取了1244904和1244900位址的內容
printf("%d\n",*b1);
printf("%d\n",*c1);
return 0;
解釋:從位址中可以看出static int a=3; a的位址是4345228,而b,c,
i位址都是124490..;由此可得
a 應該是放在堆中,
fuzhi
()函式銷毀後還會存在,而b,
c,i應該是放在棧中,函式銷毀後他們都會釋放。
堆疊指標理解
堆疊指標sp在片內ram128b中開闢棧區,並隨時跟蹤棧頂位址。它是按 先進後出 的原則訪問資料。開機復位後,微控制器棧底位址為07h。主要用來儲存臨時資料,區域性變數和中斷 自程式的返回位址。堆疊指標總是指向棧頂元素。所以資料入棧的時候,堆疊指標先加1,再壓棧。向上增長方式。和計算機的方式一樣。出...
斷點指標和任務堆疊指標
斷點資料 把任務被中止執行時的位置叫做斷點,把當時存放在cpu的pc psw和通用暫存器等各暫存器中的資料叫做斷點資料。斷點指標 任務被終止時 在pc暫存器中 cpu的當前程式執行指標。任務堆疊指標 指向任務堆疊棧頂的指標 乙個任務包含 任務控制塊 任務堆疊 任務 ucos進行任務切換時,osctx...
堆疊記憶體和指標
首先,堆疊都是記憶體。棧是記憶體上面的,先進後出。堆是記憶體上面的,先進先出。堆疊和記憶體的關聯 乙個32位程式,那麼32位位址只能表示4g的空間。那麼棧就只有4g,而堆就有你的實際記憶體大小。這句話是錯的,正確的是,棧 堆 全域性靜態區 4g 注意 電腦核心使用2g,自己則只能使用最大2g,而執行...