force在堆栈中分配char [](字符串)而不是全局

时间:2015-02-14 04:30:40

标签: c++ string gcc stack

我试图强制编译器在堆栈中分配内联字符串: 此代码在.rdata部分中分配字符串:

foo("test");

虽然此代码在堆栈中分配字符串:

char szt1[] = "test1";
foo(szt1);

这正是我想强迫的。

如何强制编译始终在堆栈中分配数组? 我正在使用gcc。

由于

2 个答案:

答案 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你甚至都不知道是否存在传统的堆栈。