gpt4 book ai didi

C++ 指针增量查询

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:25:48 26 4
gpt4 key购买 nike

我有一个函数的工作代码,它接受一个字符和一个数字,并通过将该字符复制一定次数来形成一个字符串。这是一个非常好的作品。

char * buildstr(char c, int n)
{
char * pc = new char[n+1];
for (int i = 0; i < n; ++i)
{
*(pc+i) = c;
}

*(pc+n) = '\0';
return pc;
}

但是,如果我使用另一种逻辑,即直接递增指针本身,那么当我使用 delete [] 释放 main 函数中的内存时,会出现错误。

我的问题是什么?

谢谢,

char * buildstr(char c, int n)
{
char * pc = new char[n+1];
for (int i = 0; i < n; ++i)
{
*pc = c;
pc++;

}
*(pc) = '\0';
return pc;
}

最佳答案

问题是您要返回递增的指针。 delete[] 必须使用调用 new[] 时返回的指针值来调用,否则会出现未定义的行为。这同样适用于对 free 的调用以及由 malloccalloc 等返回的指针。

关于C++ 指针增量查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30378416/

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