我記得以前學 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 回答
- 0 關注
- 823 瀏覽
添加回答
舉報
0/150
提交
取消