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 运算符详解 C++ new 运算符是 C++ 编程语言中的一个重要概念,它有多种含义和用法,这篇文章将对 C++ new 运算符的各种用法进行详细的介绍。 C++ new 运算符的多种含义 C++ new 运算符的含义可以分为三种...
在C++编程语言中,`new`操作符是动态内存分配的关键部分,它允许我们在运行时为对象分配内存。这个“课程实例 c++ new”很可能包含了一系列关于如何使用`new`来创建、管理以及理解C++中的动态内存的实例和练习。 ...
"dbg_new.rar_c++ new源码"提供了一个跨平台的内存泄漏检测工具,帮助开发者识别并修复这类问题。这个工具的核心是重新定义C++的`new`操作符,以便在分配和释放内存时进行跟踪。 首先,我们要理解C++中的`new`...
在C++编程中,动态内存管理是至关重要的一个部分,特别是在处理大量数据或者构建复杂数据结构时。`new`和`delete`关键字用于为对象分配和释放动态内存,而`new[]`和`delete[]`则针对数组进行操作。下面我们将深入...
"C++ new 用法" C++ 中的 new 运算符是一种用于动态分配内存的操作符,主要用于分配内存空间并返回指向该空间的指针。下面是新运算符的用法和注意事项: 1. new() 分配这种类型的一个大小的内存空间,并以括号中的...
C++ 中的 new 归纳详解 C++ 中的 new 是一个关键字,同时也是操作符。new 的过程可以分为三步:获得一块内存空间、调用构造函数、返回正确的指针。在 C++ 中,new 可以分为三种形态:new operator、operator new、...
在C++编程语言中,`new`运算符是动态内存管理的关键部分,用于在运行时分配和初始化对象。以下是`new`的三种主要用法的详细解析: 1. **Plain new**: 这是最常见的`new`使用方式,它负责分配内存并调用构造函数来...
C++中new和malloc的区别 C++是一种支持面向对象编程的高级语言,其内存管理机制允许程序员在运行时动态分配和释放内存。在C++中,动态内存分配主要通过new和delete运算符实现,而C语言中主要使用malloc和free函数。...
**New** 与 **Delete** 是 C++ 语言中的关键字,作为运算符使用,用于动态内存的分配与释放。与 Malloc 和 Free 不同,New 和 Delete 是编译器级别的特性,而非库函数。 #### 二、动态内存分配与初始化 对于 C++ ...
这个项目是笔者用来学习 静态库和动态库 的时候所建,基于 newmat 矩阵库,详细的操作可以参考博文[『C++ 静态库与动态库的生成和使用:基于 VS Studio 生成 newmat 矩阵库的静态库与动态库』]...
C++大学课本中非常实用又非常难理解的动态创建对象,我做了个简单的实例供大家参考学习
由于使用模板,所以只有一个Integer.h头文件 支持如下操作:>, >=, <, , ==, !=, +, +=, -, -=, *, =, /, /=,(输出);支持利用基本整数类型(int,unsigned,long long,……)和字符串(char和std::string)构造类型
`new`是C++中的一个关键字,用于在堆上分配内存。当我们声明一个数组时,可以使用`new`来分配对应类型和大小的连续内存块。例如,创建一个整型的一维动态数组可以写成: ```cpp int* arr = new int[size]; ``` ...
【标题】"tresss.rar_C++_NEW_arduino" 提示我们这是一个关于C++编程语言与Arduino新项目相关的资源包。Arduino是一个开源硬件和软件平台,常用于电子制作、物联网(IoT)项目和自动化等领域。C++是Arduino开发中常用...
浅析C++ new的三种面貌 C++ 中的 new 运算符是一种关键字,用于在堆上创建对象。然而,许多人对 new 的理解仅止于其基本用法,殊不知 new 还有三种不同的面貌:new operator、operator new() 和 placement new()。...
当 operator new 不能满足一个内存分配请求时,它抛出一个 exception(异常)。很久以前,他返回一个 null pointer(空指针),而一些比较老的编译器还在这样做。你依然能达到以前的目的(在一定程度上),但是我要...
### C++ new 操作符详解 #### 一、new操作符概述 在C++中,`new`操作符是用于动态内存分配的关键字之一。它主要用于在程序运行时分配内存,并初始化该内存区域上的对象。`new`操作符在内部会调用两个重要的函数:`...
在C++编程语言中,`new` 和 `delete` 是两个关键的运算符,用于动态内存分配和释放。当我们创建类的对象或者数组时,如果希望自定义内存管理的行为,可以重载这些运算符。在本例中,我们将讨论如何重载 `A` 类的 `...
返回类型new返回类型是对象指针,malloc对于自定义的类new会调用构造和析构函数,malloc不会调用构造和析构函数分配失败new会抛出异常,malloc
有关于c++方面new和delete的用法及关注