gpt4 book ai didi

c++ - C++中的指针和删除

转载 作者:行者123 更新时间:2023-11-28 00:36:38 24 4
gpt4 key购买 nike

void *mm(void *pTo,void*pOr,size_t s)
{
assert((pTo)&&(pOr));
char* pt = (char*)pTo;
char* po = (char*)pOr;
while(s-->0)
*pt++ = *po++;
return pTo;
}

int _tmain(int argc, _TCHAR* argv[])
{

char *p1 = new char;
char *p2 = "permutation";
p1 = (char *)mm(p1,p2,4);
printf(p1);
//delete p1;
return 0;
}

以上是我的测试项目。我怎样才能删除新的字符内存?我总是收到“检测到堆损坏错误... CRT 检测到应用程序在堆缓冲区结束后写入内存”。提前致谢。

最佳答案

你给p1 1个新字符

char *p1 = new char;

但是你试着写4

while(s-->0)
*pt++ = *po++;

您正在写入不属于您的内存。

做:

char *p1 = new char[4];

然后删除:

删除[] p1;

关于c++ - C++中的指针和删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20628424/

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