c++ - 强制在堆栈中而不是全局分配 char[] (string)

标签 c++ string gcc stack

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

foo("test");

当这段代码在栈中分配字符串时:

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

这正是我想要强制执行的。

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

谢谢

最佳答案

没有好的方法可以做到这一点,而且可能没有太多好的理由需要这种行为。

如果您不希望该字符串存在于数据段中,最接近的做法是分配一个 char 的自动数组并将字符分配给它,一次一个。

char hello[6] = {};
hello[0] = 'h'; hello[1] = 'e'; hello[2] = 'l'; hello[3] = 'l'; hello[4] = 'o';

关于c++ - 强制在堆栈中而不是全局分配 char[] (string),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28512443/

相关文章:

c++ - 告诉 execl() 进程何时退出

python - 如何在 python 3 中生成希伯来语字符串?

c++ - 使用 PyTorch、HElib 和 OpenCV 编译 C++ 程序时出现问题

c++ - USB 端口的 Windows 窗体应用程序

c++ - 在第二次调用时调用 IMemAllocator->GetBuffer block

c++ - const 传播到 std::array of pointers

c++ - 无法从 gcc 的 -fdump-tree-gimple 中找出/[ex] 运算符

python - 在 Python 中拆分 C 文件?

来自字符串快捷方式的 C 字符

海湾合作委员会 4.5.0 : host-x86_64-unknown-linux-gnu/fixincludes: No such file or directory