c 在宣告結構指標變數的時候,會分配記憶體嗎?

時間 2021-06-09 10:21:57

1樓:

瀉藥!函式clone沒有在堆上動態分配記憶體。

struct

S{};

const

structS&

clone

(structS&

R)const

structS&

bar(

structS&

R)生成中間表示式:

%struct.S

=type

define

arm_aapcscc

dereferenceable(1

)%struct.S

*@clone

(%struct.S

*dereferenceable(1

)%R)define

arm_aapcscc

dereferenceable(1

)%struct.S

*@bar

(%struct.S

*dereferenceable(1

)%R)declare

arm_aapcscc

noaliasi8*

@new

(i32)#2

生成ARM target 彙編:

clone:

sub sp, sp, #12

mov r1, r0

str r0, [sp, #8]

ldr r0, [sp, #4從棧頂指標偏移處載入到暫存器r0str r1, [sp4-byte Spilladd sp, sp, #12

bx lr

bar:

push

mov r11, sp

sub sp, sp, #16

mov r1, r0

str r0, [r11, #-4]

mov r0, #1

str r1, [sp4-byte Spillbl new從堆上申請記憶體

str r0, [sp, #4將暫存器r0儲存到棧頂指標偏移處ldr r0, [sp, #8]

mov sp, r11

popbx lr

ARM指令集 ARM architecture

2樓:二年後

1宣告指標,可以不初始化,可以對指標賦值,p = &Object;

2未初始化指標,指向乙個不確定位址。

對其解引用,會對乙個不確定記憶體進行初始化。

3書中寫法是錯誤的,早點過渡到c++ primer

3樓:573xmcgcg

這裡是書的問題,你的理解沒錯。順便說一句,如果學過 C 可以看 C++ Primer(沒有 Plus),比帶 Plus 的好。

c語言的變數和指標,怎麼理解?

zhonyong 自問自答 c語言的變數,比如如果有下面的語句 char c a 這裡定義了char型別的變數c,分配了乙個位元組的儲存空間,並且賦初值為 a 再來看 int a 這條語句定義了乙個沒有賦初值的int型變數a,在32位cpu上,即是分配了4個位元組的儲存空間。因為沒有賦初值,所以4個...

C 中宣告 const 乙個指標到底宣告的是什麼?

二圈妹 要知道指向常量的指標 pointer to const 和常量指標 const pointer 的區別 僅僅要求這個指標指向常量,我們可以修改指標的指向,甚至可以讓它指向相應的非常量資料型別 常量指標是指向的位置不變,它不一定需要指向常量。更詳細的 二圈妹 const 搭配指標和引用 C P...

C 語言宣告指標的時候 int p 到底是什麼意思?

這個回答挺到位的呢,剛剛看的,分享下 虛實道長 我憑感覺回答 1.反對譚浩強的教材誤導。c的優勢在於指標。乙個函式,有了指標,再也不用看返回值臉色了。不再受限於返回值。如果說函式的輸出來自於返回值,那你的函式原型得多複雜?介面得多易變?函式的返回值是void一點關係都沒有,都通過指標來控制顯示 交換...