zoukankan      html  css  js  c++  java
  • (一)C++入门——指针与数组——Expression: _CrtIsValidHeapPointer(Block)

    最近在入门c++,在看《c++ Primer Plus》一书。书中P106提到,删除使用New创建的数组时,是将指针重新指到第一个元素后,再进行的删除操作。代码如下:

    int *ptest = new int[3];

    ptest[0]=1;

    ptest[1]=2;

    ptest[2]=3;

    cout<<"*ptest "<<*ptest<<endl;

    ptest = ptest+1;//此时指针指向第二个元素,也即:ptest[1]

    cout<<"*ptest "<<*ptest<<endl; //这里输出 2

    delete [] ptest; //NOT OK .若是此时进行删除分配的内存,将会报Expression: _CrtIsValidHeapPointer(Block)

    delete [] (ptest-1);//OK  地址-1后,将返回第一个元素所在的地址。 或者说,delete 操作符作用于数组时,传递的参数必须是数组开始的地址

    //备注:这个报错是否说明,删除new分配的数组内存时,必须需要指针是指向第一个元素呢?

    知识点:

    1、使用New分配的内存空间,必须要使用delete进行回收

  • 相关阅读:
    扩展AuthorizeAttribute
    扩展ValidationAttribute 1
    动态linq to list排序
    CSS属性书写顺序及命名规则
    增强网站可访问性的25种方法
    -webkit-filter是神马?
    docker安装
    docker的体系结构
    docker和虚拟化
    初识docker——docker基本概述
  • 原文地址:https://www.cnblogs.com/liangxiarong/p/11992826.html
Copyright © 2011-2022 走看看