【发布时间】:2015-04-15 06:04:27
【问题描述】:
我试图强制编译器在堆栈中分配内联字符串: 此代码分配 .rdata 部分中的字符串:
foo("test");
这段代码在堆栈中分配字符串:
char szt1[] = "test1";
foo(szt1);
这正是我想要强制的。
如何强制编译总是在堆栈中分配数组? 我正在使用 gcc。
谢谢
【问题讨论】:
-
看来您已经有了答案?只需使用您的第二个 sn-p...
-
严肃的问题:为什么你想这样做?我真的很好奇你为什么真的想要这个。如果你有充分的理由,也许你会教我一些新东西。
-
如果你使用 '-fwritable-strings' gcc 选项会发生什么?我从来没有用过,只是觉得它可能会有所帮助。它应该禁用字符串池。
-
第二个代码sn-p在栈上分配了一个char指针,指向静态数据“test1”。堆栈不能在编译时分配静态。编译时栈的地址是未知的。
-
-fno-const-strings & -fwritable-strings 在 g++ 4.9.2 上不受支持