C99语法之栈上开辟内存

    C/C++中在栈上开辟内存是最常见的,而且只要是在栈上开辟内存都要是固定的,而C99中有种用法相当奇葩

int *p = ((int[]){ [0] = 1, [15] = 10 });

在栈上分配这么一个空间,其反汇编结果如下:

 1     int *p = ((int[]){ [0] = 1, [15] = 10 });
 2 00053F18  mov         dword ptr [$S1],1  
 3 00053F1F  mov         dword ptr [ebp-50h],0  
 4 00053F26  mov         dword ptr [ebp-4Ch],0  
 5 00053F2D  mov         dword ptr [ebp-48h],0  
 6 00053F34  mov         dword ptr [ebp-44h],0  
 7 00053F3B  mov         dword ptr [ebp-40h],0  
 8 00053F42  mov         dword ptr [ebp-3Ch],0  
 9 00053F49  mov         dword ptr [ebp-38h],0  
10 00053F50  mov         dword ptr [ebp-34h],0  
11 00053F57  mov         dword ptr [ebp-30h],0  
12 00053F5E  mov         dword ptr [ebp-2Ch],0  
13 00053F65  mov         dword ptr [ebp-28h],0  
14 00053F6C  mov         dword ptr [ebp-24h],0  
15 00053F73  mov         dword ptr [ebp-20h],0  
16 00053F7A  mov         dword ptr [ebp-1Ch],0  
17 00053F81  mov         dword ptr [ebp-18h],0Ah  
18 00053F88  lea         eax,[$S1]  
19 00053F8B  mov         dword ptr [p],eax  

这个也是在栈上开辟的因此需要指定,固定大小,也需要指定。

                                                      by:ECN14

转载于:https://www.cnblogs.com/ECN14/p/4153953.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值