gpt4 book ai didi

c 字符串到 specman e 代码

转载 作者:太空宇宙 更新时间:2023-11-04 01:52:53 24 4
gpt4 key购买 nike

我有一个返回 const char * 的 c 方法,我将这个函数导入到我的 specman 代码中。在“e”中执行更多语句后,字符串中的值已损坏。我猜可能是因为它指的是 C 空间中的指针。

C 签名:

const char* myFun(const char* key)
{
static string myVal;
myVal = myDictionary[key];
return myVal.c_str();
}

在电子:

myFun(key : string) : string is foreign dynamic C routine

在电子使用中:

var str : string;
var str2 : string;
str = myFun("my_test");
outf("%s",str) ---> here it gives the correct value
str2 = myFun("my_test2");
----------
----------
outf("%s",str) ---> here it gives some garbage value, statements in the middle doesn't edit this string in anyway.

关于这段代码有什么问题的想法?

最佳答案

因为字符串是不可变的,所以没有合法的方法来改变它的内容。我认为您需要查看您的 C 代码 - 它可能会重用它在上一次调用中发送给 e 的字符串的内存。如果指向 C 字符串的指针被传递给 e 而不是立即在 e 代码中释放,作为预防措施,它可以被复制,例如,使用 .copy()。

关于c 字符串到 specman e 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40115308/

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