读书人

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

发布时间: 2012-11-03 10:57:44 作者: rapoo

关于#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……

读书人网 >C++

热点推荐