在有关于内存分配和释放的代码中,容易发生这种问题。这个问题的描述就是内存已经被释放了,后面还继续使用

举个例子:

float* distance = new float [dimension];
for(int k=0;k<10;k++)
{
    for(int i=0;i<dimension;i++)
    {
    distance[i]=0;
    }
delete[] distance;
}

这段代码会在k=1时执行delete[] distance;出错,因为distance分配的内存在k=0是就已经被删除了,变成了野指针,所以第二次循环时无法再次删除。

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐