jav*_*321 1 c c++ pointers function increment
我有一个函数的工作代码,它接受一个字符和一个数字,并通过复制该字符次数来形成一个字符串.这是一件完美无缺的作品.
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;
}
Run Code Online (Sandbox Code Playgroud)
但是如果我使用另一个直接递增指针本身的逻辑,那么当我使用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;
}
Run Code Online (Sandbox Code Playgroud)
问题是你正在返回递增的指针.delete[]必须使用调用返回的指针值调用new[],否则会得到未定义的行为.这同样适用于呼叫free由归国和指针malloc,calloc等等.