如何保留以后销毁的字符串的内容?

问题描述 投票:0回答:1

我有两个字符串,string0string1string0的类型为char *,而string1的类型为const char *string1指向在堆上分配的数据,当空间被释放时它变得无效,但我知道我稍后需要它的内容。

由于以后释放内存,我不能执行以下操作:

string0 = (char *) string1;

由于这两个都是指针,因此一旦释放内存,它们都将变为无效。这就是我尝试这个的原因:

strcpy(string0, string1);

但这会产生错误:Segmentation fault (core dumped)。即使在释放堆之后,我还能尝试保留string1的内容吗?

c string pointers
1个回答
5
投票

strcpy不为您分配记忆。在将任何内容复制到string0之前,您需要为// No size is needed because `char` is always 1 byte char *string0 = malloc( strlen(string1) + 1 ); strcpy( string0, string1 ); 分配足够的内存。不要忘记终止空字节还有1个。

POSIX strdup function

char *string0 = strdup(string1); 为你做这件事。它更安全,更容易理解。

string1

或者,如果可能的话,首先不要释放qazxswpoi。

© www.soinside.com 2019 - 2024. All rights reserved.