C++指针增量查询

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)

jua*_*nza 7

问题是你正在返回递增的指针.delete[]必须使用调用返回的指针值调用new[],否则会得到未定义的行为.这同样适用于呼叫free由归国和指针malloc,calloc等等.