gpt4 book ai didi

c - 返回字符串的子串

转载 作者:太空宇宙 更新时间:2023-11-04 06:55:36 26 4
gpt4 key购买 nike

我有一个大字符串,我想在其中使用它的片段,但我不想一定要复制它们,所以我想我可以制作一个结构来标记大字符串中有用 block 的开始和长度,然后创建一个读取它的函数。

struct descriptor {
int start;
int length;
};

到目前为止一切顺利,但是当我开始编写函数时,我意识到如果不复制到内存中我就无法真正返回 block ...

char* getSegment(char* string, struct descriptor d) {
char* chunk = malloc(d.length + 1);
strncpy(chunk, string + d.start, d.length);
chunk[d.length] = '\0';
return chunk;
}

所以我的问题是:

  • 有什么方法可以不复制就返回字符串
  • 如果不是,我该如何处理这种内存泄漏,因为副本位于堆内存中,我无法控制谁将调用 getSegment

最佳答案

回答你的两个问题:

  1. 没有
  2. 调用者应该为复制的字符串提供缓冲区
  3. 我会亲自将指针传递给描述符

char* getSegment(const char* string, const char *buff, struct descriptor *d)

关于c - 返回字符串的子串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45376368/

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