我试图强制编译器在堆栈中分配内联字符串: 此代码在.rdata部分中分配字符串:
foo("test");
虽然此代码在堆栈中分配字符串:
char szt1[] = "test1";
foo(szt1);
这正是我想强迫的。
如何强制编译始终在堆栈中分配数组? 我正在使用gcc。
由于
答案 0 :(得分:3)
没有好办法做到这一点,也许没有多少理由要求这种行为。
如果您不希望字符串存在于数据段中,您可以做的最接近的事情是分配一个char
的自动数组并为其分配字符,一次一个。
char hello[6] = {};
hello[0] = 'h'; hello[1] = 'e'; hello[2] = 'l'; hello[3] = 'l'; hello[4] = 'o';
答案 1 :(得分:0)
oneliner是foo(std::string("test").c_str());
好的,从技术上讲,你不知道小字符串优化会起作用,但OTOH你甚至都不知道是否存在传统的堆栈。