假设我有一个指向内存中某个字符串的 char 指针。
并假设我想将该字符串复制到内存中的其他位置。
void cpy(char **dst, char *src)
{
*dst = (char *) realloc(*dst, strlen(src) + 1);
memcpy(*dst, src, strlen(src) + 1);
}
(假设内存分配成功,并且src
不为 NULL)
如果我这样调用这个函数会怎样:
char *str = malloc(14);
memcpy(str,"hello, world!", 14);
cpy(&str,str+7);
现在我希望srt
指向字符串"world!"
(它在我的测试中做了)。
但我担心的是,在这个调用中,cpy
实际上指向同一字符串的不同位置。而且,当调用时,这块内存可能会被释放。但在下一行中,我试图从那个地方复制. *dst
src
realloc
*dst
memcpy
所以问题是:它有什么问题吗?
或者换一种说法 - 释放内存并在之后立即使用它可以吗?
谢谢。
注意:该示例已更新,以便realloc
在使用malloc
.