`
weihe6666
  • 浏览: 444232 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

C++ new

阅读更多

class ArcData
{
public:
/** 前向的节点数 */
int preNum;
/** 前向的节点编号 */
int *p_PreData;
/** 后向的节点数 */
int nextNum;
/** 后向的节点数据 */
int *p_NextData;
/** 后向的节点权重,未使用 */
float *p_NextDataWeight;
/** 节点代号,词或字的编码,没有为-1 */
int wordCode;
/** 起始帧,每帧表示10ms */
int startFrame;
/** 结束帧 */
int endFrame;
/** 声学分 */
float amScore;
/** 语言分 */
float lmScore;
/** 置信度值 */
float confScore;
/** 未知 */
int dword2C;
/** 附加数据条数,未使用,用来放权重? */
int addNum;
/** 附加数据 */
int *p_AddData;
public:
ArcData();
~ArcData();
};

int v117_frameNum;
ArcData v56_arcdata;
v56_arcdata = new ArcData[v55];
v117_frameNum = (int)((int*)v56_arcdata - 1); 
v117_frameNum = v55;  //modified
[\code]

上面中v117_frameNum = (int)((int*)v56_arcdata - 1); 代表什么意思?
当new一个新的对象时,在新对象前的地址里存放找这个new对象的大小。

比如:v117_frameNum = (int)((int*)v56_arcdata - 1); 和v117_frameNum = v55; 是等价的。

下面是调试的结果:
((int*)v56_arcdata - 1) = 0x00436028
((int*)v56_arcdata ) = 0x0043602c
((int*)v56_arcdata + 1) = 0x00436030

(*((int*)v56_arcdata -1))= 425//与v117_frameNum相等
v117_frameNum = 425
分享到:
评论

相关推荐

    C++new运算符[参考].pdf

    C++ new 运算符详解 C++ new 运算符是 C++ 编程语言中的一个重要概念,它有多种含义和用法,这篇文章将对 C++ new 运算符的各种用法进行详细的介绍。 C++ new 运算符的多种含义 C++ new 运算符的含义可以分为三种...

    课程实例 c++ new

    在C++编程语言中,`new`操作符是动态内存分配的关键部分,它允许我们在运行时为对象分配内存。这个“课程实例 c++ new”很可能包含了一系列关于如何使用`new`来创建、管理以及理解C++中的动态内存的实例和练习。 ...

    dbg_new.rar_c++ new源码

    "dbg_new.rar_c++ new源码"提供了一个跨平台的内存泄漏检测工具,帮助开发者识别并修复这类问题。这个工具的核心是重新定义C++的`new`操作符,以便在分配和释放内存时进行跟踪。 首先,我们要理解C++中的`new`...

    C++中new/delete与new[]/delete[]的使用区别

    在C++编程中,动态内存管理是至关重要的一个部分,特别是在处理大量数据或者构建复杂数据结构时。`new`和`delete`关键字用于为对象分配和释放动态内存,而`new[]`和`delete[]`则针对数组进行操作。下面我们将深入...

    C++new 用法

    "C++ new 用法" C++ 中的 new 运算符是一种用于动态分配内存的操作符,主要用于分配内存空间并返回指向该空间的指针。下面是新运算符的用法和注意事项: 1. new() 分配这种类型的一个大小的内存空间,并以括号中的...

    c语言中new_C++的new归纳详解

    C++ 中的 new 归纳详解 C++ 中的 new 是一个关键字,同时也是操作符。new 的过程可以分为三步:获得一块内存空间、调用构造函数、返回正确的指针。在 C++ 中,new 可以分为三种形态:new operator、operator new、...

    c++中new的三种用法详细解析

    在C++编程语言中,`new`运算符是动态内存管理的关键部分,用于在运行时分配和初始化对象。以下是`new`的三种主要用法的详细解析: 1. **Plain new**: 这是最常见的`new`使用方式,它负责分配内存并调用构造函数来...

    C++中new和malloc的区别

    C++中new和malloc的区别 C++是一种支持面向对象编程的高级语言,其内存管理机制允许程序员在运行时动态分配和释放内存。在C++中,动态内存分配主要通过new和delete运算符实现,而C语言中主要使用malloc和free函数。...

    Malloc和new区别

    **New** 与 **Delete** 是 C++ 语言中的关键字,作为运算符使用,用于动态内存的分配与释放。与 Malloc 和 Free 不同,New 和 Delete 是编译器级别的特性,而非库函数。 #### 二、动态内存分配与初始化 对于 C++ ...

    C++ newmat矩阵库+静态库与动态库的生成与使用

    这个项目是笔者用来学习 静态库和动态库 的时候所建,基于 newmat 矩阵库,详细的操作可以参考博文[『C++ 静态库与动态库的生成和使用:基于 VS Studio 生成 newmat 矩阵库的静态库与动态库』]...

    C++new动态创建对象简单易懂的实例

    C++大学课本中非常实用又非常难理解的动态创建对象,我做了个简单的实例供大家参考学习

    [C++][New]大数Integer类

    由于使用模板,所以只有一个Integer.h头文件 支持如下操作:>, >=, <, , ==, !=, +, +=, -, -=, *, =, /, /=,(输出);支持利用基本整数类型(int,unsigned,long long,……)和字符串(char和std::string)构造类型

    C++动态创建多维数组

    `new`是C++中的一个关键字,用于在堆上分配内存。当我们声明一个数组时,可以使用`new`来分配对应类型和大小的连续内存块。例如,创建一个整型的一维动态数组可以写成: ```cpp int* arr = new int[size]; ``` ...

    tresss.rar_C++_NEW_arduino

    【标题】"tresss.rar_C++_NEW_arduino" 提示我们这是一个关于C++编程语言与Arduino新项目相关的资源包。Arduino是一个开源硬件和软件平台,常用于电子制作、物联网(IoT)项目和自动化等领域。C++是Arduino开发中常用...

    浅析C++ new的三种面貌

    浅析C++ new的三种面貌 C++ 中的 new 运算符是一种关键字,用于在堆上创建对象。然而,许多人对 new 的理解仅止于其基本用法,殊不知 new 还有三种不同的面貌:new operator、operator new() 和 placement new()。...

    详解C++ new-handler机制

    当 operator new 不能满足一个内存分配请求时,它抛出一个 exception(异常)。很久以前,他返回一个 null pointer(空指针),而一些比较老的编译器还在这样做。你依然能达到以前的目的(在一定程度上),但是我要...

    C++_new_operator详解

    ### C++ new 操作符详解 #### 一、new操作符概述 在C++中,`new`操作符是用于动态内存分配的关键字之一。它主要用于在程序运行时分配内存,并初始化该内存区域上的对象。`new`操作符在内部会调用两个重要的函数:`...

    17~C++ new和delete运算符重载

    在C++编程语言中,`new` 和 `delete` 是两个关键的运算符,用于动态内存分配和释放。当我们创建类的对象或者数组时,如果希望自定义内存管理的行为,可以重载这些运算符。在本例中,我们将讨论如何重载 `A` 类的 `...

    BeyondXinXin#Blog#C++ new和malloc的区别1

    返回类型new返回类型是对象指针,malloc对于自定义的类new会调用构造和析构函数,malloc不会调用构造和析构函数分配失败new会抛出异常,malloc

    c++语言,new和delete

    有关于c++方面new和delete的用法及关注

Global site tag (gtag.js) - Google Analytics