第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

對比const定義的變量,define定義的宏真的會存在多次內存拷貝么?

對比const定義的變量,define定義的宏真的會存在多次內存拷貝么?

C++
紅顏莎娜 2019-03-20 08:35:03
我記得以前學 c++,學到 const 的時候,都建議使用 const 定義變量,而不是 define。const int N = 10; // better#define N 10 // bad除了類型安全等原因,其中一個講到的就是 define 定義的宏在展開后,相比 const 定義的,會有更多的內存分配,比如這篇文章:https://blog.csdn.net/love_ga...然后我用 visual studio 2015匯編下,看到的都是,#include<iostream>#include <stdio.h>using namespace std;const int N = 1; // #define N 1 下匯編也是和下面一樣的int main(){010B16D0  push        ebp  010B16D1  mov         ebp,esp  010B16D3  sub         esp,0D8h  010B16D9  push        ebx  010B16DA  push        esi  010B16DB  push        edi  010B16DC  lea         edi,[ebp-0D8h]  010B16E2  mov         ecx,36h  010B16E7  mov         eax,0CCCCCCCCh  010B16EC  rep stos    dword ptr es:[edi]       int a = N;010B16EE  mov         dword ptr [a],1      int b = N;010B16F5  mov         dword ptr [b],1       return 0;010B16FC  xor         eax,eax  }dword ptr [a],1 這句,逗號的后面使用的都是立即數(shù) 1。我在 stack overflow 上查了下 define vs const相關的帖子(比如 https://stackoverflow.com/que...),并沒有提及define會帶來更多的內存分配。那么,define 定義的宏在展開后,相比 const 定義的,會有更多的內存分配 這種說法是不是不對?
查看完整描述

2 回答

?
守候你守候我

TA貢獻1802條經(jīng)驗 獲得超10個贊

#define是預編譯階段直接展開的,如果是常量,當然直接變成立即數(shù)了。

查看完整回答
反對 回復 2019-03-20
?
元芳怎么了

TA貢獻1798條經(jīng)驗 獲得超7個贊

const定義的變量才可能分配空間吧,上面的例子是因為編譯器做了優(yōu)化。如果是const int* a = &N;就會為N分配空間了。

查看完整回答
反對 回復 2019-03-20
  • 2 回答
  • 0 關注
  • 823 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號