【发布时间】:2018-06-30 20:18:31
【问题描述】:
我目前想知道当只有指向字符串的指针已知时,是否可以检查 C 字符串是否具有静态生命周期。
基本上我想实现这样一个功能:
bool isStaticString(const char *str)
{
//do magic stuff
}
结果应该是这样的:
isStaticString("Hello World!"); //returns true
char str[5] = {'\0'};
isStaticString(str); //returns false
有没有可移植的方式来实现这样的功能?
PS:我希望这样的问题还没有被问到,我真的不知道要搜索什么。我的标题没有给我任何结果。
【问题讨论】:
-
不,你为什么需要这个?
-
你问的是C还是C++?
-
写入只读内存中的字符串应该引发异常,您可以捕获并忽略它(我认为)。但是编译器不会编译它,因为你的字符串被声明为
const,所以你必须依次覆盖它。它也不是可移植的:它依赖于目标操作系统能够构造只读段,以及编译器将这些字符串写入一个。 -
@HolyBlackCat:如果字符串在只读内存中,写入字符串将触发错误。 AFAIK 两种语言 C 和 C++ 本身都没有关于字符串(或其他信息)的元信息,除了它们可以声明为
const或不声明。哪个(再次 AFAIK)你不能在运行时 test。