gpt4 book ai didi

c++ - 执行strcpy时char []和char *之间的区别

转载 作者:行者123 更新时间:2023-11-30 02:35:23 25 4
gpt4 key购买 nike

我有下面的代码,我想知道str2str3的实现有什么区别,它们都给出相同的结果,哪个更容易出现错误?编辑:当我测试 str2 的表示时,我发现有一次我的代码崩溃了,因为 str2 是一个错误的指针!

/* strcpy example */
#include <stdio.h>
#include <string.h>

int main ()
{
char str1[] = "Sample string";
char str0[] = "Sample String and more";
char* str2;
str2 = new char[40];
char str3[40];
strcpy (str2,str1);
strcpy (str3,str1);
strcpy (str2,str0);// crash happened here str2 is bad pointer!!!
printf ("str1: %s\nstr2: %s\nstr3: %s\n",str1,str2,str3);
delete str2;
return 0;
}

最佳答案

除了 str2 是一个指针而 str3 是一个数组这一事实之外(指针使用起来有点棘手,因为你可能会忘记删除它等),还有另一个问题:分配给 str2 的内存在可用空间上,通过 operator new。这是一个缓慢的操作。相比之下,str3 具有自动存储持续时间,并且大多数情况下其内存分配在堆栈上,速度要快得多。因此,在性能关键代码中,这可能会有所作为。

关于c++ - 执行strcpy时char []和char *之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33663663/

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