亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在內存中我的變量存儲在C中?

在內存中我的變量存儲在C中?

C
元芳怎么了 2019-07-27 15:19:21
在內存中我的變量存儲在C中?通過考慮將內存分為四個部分:數據,堆,堆棧和代碼,全局變量,靜態變量,常量數據類型,局部變量(在函數中定義和聲明),變量(在main函數中),指針,并動態分配空間(使用malloc和calloc)存儲在內存中?我認為他們將分配如下:全局變量------->數據靜態變量------->數據常量數據類型----->代碼局部變量(在函數中聲明和定義)--------> stack在main函數-----> heap中聲明和定義的變量指針(例如char *arr,int *arr)------->堆動態分配空間(使用malloc和calloc)-------->堆棧我只是從C的角度來指這些變量。如果我錯了,請糾正我,因為我是C的新手。
查看完整描述

3 回答

?
茅侃侃

TA貢獻1842條經驗 獲得超22個贊

你有其中一些是正確的,但是寫這些問題的人至少會欺騙你一個問題:

  • 全局變量------->數據(正確)

  • 靜態變量------->數據(正確)

  • 常量數據類型----->代碼和/或數據。當一個常量本身存儲在數據段中時,考慮字符串文字,并且對它的引用將嵌入到代碼中

  • 局部變量(在函數中聲明和定義)--------> stack(正確)

  • main函數中聲明和定義的變量-----> 堆也堆棧(老師試圖欺騙你)

  • 指針(例如:char *arr,int *arr)-------> 堆數據或堆棧,具體取決于上下文。C允許您聲明全局或static指針,在這種情況下,指針本身將在數據段中結束。

  • 動態分配的空間(使用malloccalloc,realloc)--------> 堆的堆

值得一提的是,“堆?!北徽椒Q為“自動存儲類”。


查看完整回答
反對 回復 2019-07-27
?
侃侃爾雅

TA貢獻1801條經驗 獲得超16個贊

糾正了錯誤的句子


constant data types ----->  code //wrong

局部常量變量----->棧


初始化全局常量變量----->數據段


未初始化的全局常量變量-----> bss


variables declared and defined in main function  ----->  heap //wrong

在main函數-----> stack中聲明和定義的變量


pointers(ex:char *arr,int *arr) ------->  heap //wrong


dynamically allocated space(using malloc,calloc) --------> stack //wrong

指針(例如:char * arr,int * arr)------->指針變量的大小將在堆棧中。


考慮你動態分配n個字節的內存(使用malloc或calloc),然后使指針變量指向它?,F在,n內存的字節數在堆中,指針變量需要4個字節(如果是64位機器8個字節),它將在堆棧中存儲n內存塊字節的起始指針。


注意:指針變量可以指向任何段的內存。


int x = 10;

void func()

{

int a = 0;

int *p = &a: //Now its pointing the memory of stack

int *p2 = &x; //Now its pointing the memory of data segment

chat *name = "ashok" //Now its pointing the constant string literal 

                     //which is actually present in text segment.

char *name2 = malloc(10); //Now its pointing memory in heap

...

}

動態分配空間(使用malloc,calloc)-------->堆


查看完整回答
反對 回復 2019-07-27
  • 3 回答
  • 0 關注
  • 494 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號