gpt4 book ai didi

c - 如何检查/测试字符串是静态还是动态并且可以编辑

转载 作者:行者123 更新时间:2023-11-30 18:41:14 25 4
gpt4 key购买 nike

这里我们有 3 个字符串:

char  a1[ ] = "abc"; // static
char a2[4] = "abc"; // static
char* a3 = "abc"; // dynamic

测试功能仅作为示例

int test(char* v)
{
return (*v = '1')
}

让我们在 main 和结果中进行测试

int main()
{

int n;

n = test(a1); // OK//
// if not '1' use malloc else leave it
n = test(a2); // OK
// if not '1' use malloc else leave it
n = test(a3); // const Error
// if not '1' use malloc else leave it
}

如何测试/检查a3指针?所以你可以采取类似 malloc(); 的操作;因为它不可编辑,所以我们需要新的指针。

最佳答案

崩溃的原因不是 a3 是一个指针。它指向的内存是编译到程序中的常量,因此无法更改。

没有标准化的方法来测试情况是否如此。提供一个需要运行时开销但许多程序员不会使用的功能是违反 C 哲学的。

因此,如果您需要的话,您有责任跟踪这一点。

您可能会看到的一件事是使用安全检查器,例如 splint ,据我了解,它会扫描您的代码以查找此类潜在问题。

关于c - 如何检查/测试字符串是静态还是动态并且可以编辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22647673/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com