首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

关于#define是否多处申请内存的有关问题

2012-11-03 
关于#define是否多处申请内存的问题在网上看到一段代码:C/C++ code#define STRING abcdefghijklmn\n con

关于#define是否多处申请内存的问题
在网上看到一段代码:

C/C++ code
#define STRING "abcdefghijklmn\n" const char string[]="abcdefghijklm\n"; ... printf(STRING); //为STRING分配了第一次内存 printf(string); //为string一次分配了内存,以后不再分配 ... printf(STRING); //为STRING分配了第二次内存 printf(string);  ...

但在看《effective c++》item2时,发现里面写有:Like #defines,enums never result in that kind of unnecessary memory allocation.

到底是哪个正确呢。

[解决办法]
这个string是以个常字符串,所以在其生命周期中分配了一次。
探讨

可能我没描述清楚吧,只是想确认下以下的一些问题,可能很低端,但我没在网上找到答案,才来发问的。
我想请教下:
printf(STRING); //为STRING分配了第一次内存
printf(STRING); //为STRING分配了第二次内存

这两块内存是同一块内存吗?应该不是吧。

printf(string); //为string一次分配了内存,以后不再分配
printf……

热点排行