关于#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是以个常字符串,所以在其生命周期中分配了一次。