gpt4 book ai didi

c - 奇怪的 sqlite 数据库字符串文件路径错误

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

因此,我打算使用 sqlite3 更新 skype 的 main.db 文件。

我使用 sqlite3_open 函数打开这样的连接。

int rc = sqlite3_open(filepath,db);

我正在尝试动态处理文件路径字符串,但一个奇怪的错误让我抓狂。

我有两个字符串 szFile 和 szFilePath,szFile 是一个测试字符串,它将包含 db 文件的实际路径,而 szFilePath 只是这次由函数动态生成的相同字符串。

事情就在sqlite3_open函数执行之前,你在截图上看到的两个字符串是相同的,我什至贴出内存给你看。

看图片: Picture 1 Picture 2

现在,尽管完全相同,但无论我运行此代码多少次,只有 szFile 有效,而另一个给我“无法打开文件路径”错误,让我完全困惑。另外,如果这是正常的,我不会拒绝,但是通过在下一个 if 处设置断点,我可以看到 szFilePath 失去了它的值(填充了 c 十六进制值)。

有什么问题吗?

最佳答案

您正在返回一个指向栈上数组的 char* - 一旦您从函数 szGetFilePath 返回,这个指针很可能指向junk(它肯定会在几个级别的额外调用之后指向 junk - 当堆栈上的值被覆盖时)。

您可以从函数返回一个动态分配的 char 数组(即 malloced)(记住稍后要free),或者传递一个指向通过 char 数组到 szGetFilePath 并将字符数据放入其中。

关于c - 奇怪的 sqlite 数据库字符串文件路径错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6244807/

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