c++ new 的相关
首先是一个链接 这里 说的很详细了
http://www.cnblogs.com/alephsoul-alephsoul/archive/2012/10/17/2728019.html
关于c++ new 的本质
=======
在上面基础上 要说的 是 new 和 malloc 的区别
首先是 malloc的相关用法
http://www.cnblogs.com/zhangyabin---acm/p/3188076.html
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
using namespace std; //测试大小端的宏
static union {char c[4];unsigned int l;} endian_test = {{'l','?','?','b'}};
#define ENDIANNESS ((char)endian_test.l)
#pragma pack(4)
struct MyStruct{ char m_char;
long m_int;
};
class TestArray
{
public:
TestArray()
{ cout<<"this is construct"<<endl;
}
~TestArray()
{ cout<<"this is destruct"<<endl;
}
}; int main()
{ ///测试new一个数组时的指针前几个个字节是保留了 数组的长度 //当以下数组是int 或者MyStruct 时 向前取的值 完全是0
// 所以得出只对 自定义的class 才有意义
TestArray* pArray = new TestArray[257]; int* pPoint = (int*)pArray - 2;
cout<<"the pre 4 byte's value is "<< *pPoint<<endl;
printf("the pre address is %p\n",pPoint);
printf("the array address is %p\n",pArray); char* pChar = (char*)pPoint;
int array[8] = {0}; for(int i = 0 ; i < 8; ++i)
{
array[i] = *pChar;
++pChar;
cout<<"the " << i <<" byte 's value is " << array[i]<<endl;
} return 0;
}
以下是区别
http://blog.csdn.net/zjc156m/article/details/16819357
最后是 new 在数组时需要注意的
http://blog.csdn.net/hazir/article/details/21413833
这里说的和详细
以上要补充的是
我在 mac os 、64位机器 上 实验的效果是 自定义类 在new 数组时 实际返回指针的向前偏移8 个字节 后 取一个int * p 得到 数组的长度
但是 这里的只对 自定义的class 有意义, 基本类型 和 自定义的 struct 这里取到的是 0
见下面的代码
c++ new 的相关的更多相关文章
- 嵌入式单片机STM32应用技术(课本)
目录SAIU R20 1 6 第1页第1 章. 初识STM32..................................................................... ...
- java中的字符串相关知识整理
字符串为什么这么重要 写了多年java的开发应该对String不陌生,但是我却越发觉得它陌生.每学一门编程语言就会与字符串这个关键词打不少交道.看来它真的很重要. 字符串就是一系列的字符组合的串,如果 ...
- SQL Server相关书籍
SQL Server相关书籍 (排名不分先后) Microsoft SQL Server 企业级平台管理实践 SQL Server 2008数据库技术内幕 SQL Server性能调优实战 SQL S ...
- dotNET跨平台相关文档整理
一直在从事C#开发的相关技术工作,从C# 1.0一路用到现在的C# 6.0, 通常情况下被局限于Windows平台,Mono项目把我们C#程序带到了Windows之外的平台,在工作之余花了很多时间在M ...
- 在ASP.NET Core应用中如何设置和获取与执行环境相关的信息?
HostingEnvironment是承载应用当前执行环境的描述,它是对所有实现了IHostingEnvironment接口的所有类型以及对应对象的统称.如下面的代码片段所示,一个HostingEnv ...
- virtualbox linux虚拟机相关
linux虚拟机设置为静态IP 在virtualbox中安装好linux虚拟机后,如果采用的是NAT方式的话,linux虚拟机默认采用dhcp方式自动上网,而且用的是NetworkManager服务而 ...
- WebGIS中等值面展示的相关方案简析
文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/ 1.背景 等值面是气象.环保等相关项目上常用到的效果展示.在传统的CS项 ...
- .NET同步与异步之相关背景知识(六)
在之前的五篇随笔中,已经介绍了.NET 类库中实现并行的常见方式及其基本用法,当然.这些基本用法远远不能覆盖所有,也只能作为一个引子出现在这里.以下是前五篇随笔的目录: .NET 同步与异步之封装成T ...
- zookeeper集群的搭建以及hadoop ha的相关配置
1.环境 centos7 hadoop2.6.5 zookeeper3.4.9 jdk1.8 master作为active主机,data1作为standby备用机,三台机器均作为数据节点,yarn资源 ...
- mysql 5.7中的用户权限分配相关解读!
这篇文章主要介绍了MySQL中基本的用户和权限管理方法,包括各个权限所能操作的事务以及操作权限的一些常用命令语句,是MySQL入门学习中的基础知识,需要的朋友可以参考下 一.简介 各大帖子及文章都会讲 ...
随机推荐
- MySQL系列(二)---MySQL事务
MySql 事务 目录 MySQL系列(一):基础知识大总结 MySQL系列(二):MySQL事务 什么是事务(transaction) 保证成批操作要么完全执行,要么完全不执行,维护数据的完整性.也 ...
- 一种轻便且灵活的js模板的思路
一种轻便且灵活的js模板的思路 项目地址:https://github.com/j20041426/template 思路背景 在Vue.React.Angular等大前端框架异军突起的今天,写前端时 ...
- JavaScript预处理
在预处理阶段js引擎会扫描代码中用var定义的变量和用声明的方式定义的函数 用声明方式定义函数 function a(){ alert('hello world'); } 用函数表达式定义函数 var ...
- Linux下软件的卸载
一.rpm -q -a 查看所安的全部软件 二.#rpm -e [package name] 卸载想要卸载的软件
- Hardcoded string XXX,&…
eclipse布局文件警告:Hardcoded string XXX, should use @string resource
- Sybase数据库的连接,JNDI配置,Hibernate配置
最近的一个项目就是移植老项目的代码,有一个模块用的是Sybase数据库,我表示从来没接触过,更不用说怎么用了.再者这东西都是几乎被淘汰的东西了,而且网上搜到的东西简直了,全是复制粘贴的. 一.使用工具 ...
- 【机器学习PAI实践一】搭建心脏病预测案例
一.背景 心脏病是人类健康的头号杀手.全世界1/3的人口死亡是因心脏病引起的,而我国,每年有几十万人死于心脏病. 所以,如果可以通过提取人体相关的体侧指标,通过数据挖掘的方式来分析不同特征对于心脏病的 ...
- box-sizing 属性应用
1.box-sizing属性功能 官方说明文档为:http://www.w3school.com.cn/cssref/pr_box-sizing.asp box-sizing 属性允许您以特定的方式定 ...
- angular基础
=>是es6语法中的arrow function 举例: (x) => x + 6 相当于 function(x){ return x + 6; } >>> 是无符号移位 ...
- 重构tableview!
昨天用字典构筑tableview简直愚蠢!不过蠢过才知道如何写出好的代码.下面将用模型重构tableview! -------------------------------------------- ...