【发布时间】:2018-04-15 14:57:41
【问题描述】:
我的代码有问题
char* strdup(const char* s)
{
int n = 0;
for(; *s != 0; s++)
{
n++;
}
char* p = new char[n+1];
for(int i = 0; i < n; i++)
{
p[i] = s[i];
}
p[n] = 0;
return p;
}
int main()
{
const char* p = "testing";
char* p_copy = strdup(p);
std::cout << p << '\n' << p_copy << std::endl;
return 0;
}
没有按预期工作。
我想编写一个函数,它接收 const char* 并将其复制到新分配的 char 内存中。完成后,它应该返回一个指向字符的指针。
现在当我尝试它时,我的输出很简单:
testing
提前感谢您的帮助
【问题讨论】:
-
你为什么不使用
strcpy或memcpy之类的功能。 -
将
char*a复制到char*b很简单:b = a。这里的代码试图复制指针指向的 data。这种区别并非微不足道。忽视它总是会带来麻烦。
标签: c++ string memory char allocation