一个int数组内存初始化的讨论

高速设计注意事项总结——MDI篇 在以太网高速通信系统中,MDI(Medium Dependent Interface,介质相关接口)是连接物理层芯片(PHY)与传输介质(如网线)的关键接口,其设计直接影响信号完整性、传输速率和抗干扰能力。本文围绕 MDI 及 RJ45 接口电路、关键参数、设计与布线要点展开,为高速以太网设计提供参考。本文包含MDI 及 RJ45 接口电路组成、电路设计注意事项、布局布线要求等内容 阅读详情

 

在C++ primer中,有很多关于new int[10]等语言的描述和例子。 如8.4.3中:

 

int * pia = new int[104];

 

pia是一个指向1024的int类型的数组的指针,而这个数组中,所有的数据都是没有被初始化过的。

然而,我的例子程序显示,整个数组时被初始化过的,莫非是编译器相关?

 

 

我的输出结果是:


ewuming@cnshc0032 []: g++ -o a.out array.cc
ewuming@cnshc0032 []: ./a.out
array value: 1074592164
array value: 1074588840
array value: -1073748456
array value: 134515377
array value: 1073834604
arr value: 0        arr address: 0x804a008
arr new value: 0    arr address: 0x804a008
arr value: 0        arr address: 0x804a010
arr new value: 0    arr address: 0x804a010
arr value: 0        arr address: 0x804a018
arr new value: 0    arr address: 0x804a018
arr value: 0        arr address: 0x804a020
arr new value: 0    arr address: 0x804a020
arr value: 0        arr address: 0x804a028
arr new value: 0    arr address: 0x804a028
arr value: 0        arr address: 0x804a030
arr new value: 0    arr address: 0x804a030
arr value: 0        arr address: 0x804a038
arr new value: 0    arr address: 0x804a038
arr value: 0        arr address: 0x804a040
arr new value: 0    arr address: 0x804a040
arr value: 0        arr address: 0x804a048
arr new value: 0    arr address: 0x804a048
arr value: 0        arr address: 0x804a050
arr new value: 0    arr address: 0x804a050
*** glibc detected *** free(): invalid pointer: 0x0804a030 ***
ewuming@cnshc0032 []: which g++
/usr/bin/g++
ewuming@cnshc0032 []: which g++
ewuming@cnshc0032 []: g++ -v
Reading specs from /usr/lib/gcc-lib/i586-suse-linux/3.3.3/specs
Configured with: ../configure --enable-threads=posix --prefix=/usr --with-local-prefix=/usr/local --infodir=/usr/share/info --mandir=/usr/share/man --enable-languages=c,c++,f77,objc,java,ada --disable-checking --libdir=/usr/lib --enable-libgcj --with-gxx-include-dir=/usr/include/g++ --with-slibdir=/lib --with-system-zlib --enable-shared --enable-__cxa_atexit i586-suse-linux
Thread model: posix
gcc version 3.3.3 (SuSE Linux)

 

 

在使用传统c语言的编程方法(int array[5];)中,这个是可以理解的,普通的数组都是没有被初始化过的。

在使用C++语言的编程方法(int* arr = new int[10];)中,我觉得应该是所有数据都是被初始化过的。

这样,为什么Lippman在书中专门如此提到呢?

 

纳闷中。。。。。

从零开始:小鼠Bulk RNA-seq全流程实战指南 本文提供了一份详尽的小鼠Bulk RNA-seq全流程实战指南,涵盖从软件环境搭建、原始数据质控与清洗、序列比对、基因定量到下游差异表达分析与功能富集。内容面向生物信息学新手,通过清晰的代码示例和步骤解析,帮助读者系统掌握Bulk RNA-seq数据分析的核心技能,并产出可靠的生物学洞见。 阅读详情

相关推荐

如何评价智能座舱的好坏之指标拆分?

智慧服务实际上是有一些比较实用的功能的,常用的有后视镜自动伸展、离车自动落锁、座椅记忆等,但这部分前装率较高,各家的区分度不高,所以一级指标中占比最低(10%)。不过呢,规则里的权重仅有5%,或许是考虑到比较成熟,没有区分度。全景环视明显拔得头筹,占比85%,这对于我这种没有倒车影像不敢倒车的人,举双手赞成,但还是要看其效果,比如,现在,测评规则的颁布实际上也让我们看到,智能座舱的技术方案正走向成熟,并将走进规范化运作。,占比 60%,这与我们对座舱最直接的认知符合,

shuiqingyan的博客 1083

C++入门篇,内存管理

本节介绍C/C++的内存分布,介绍C和C++中动态内存管理,并介绍之间的区别,介绍new和delete关键字的实现原理和定位new表达式。

CHAKMING1的博客 1720

MID360+fastlio功能笔记

前言。

qq_35598561的博客 5297

C++内存管理

内存分布 栈又叫堆栈,非静态局部变量/函数参数/返回值等等,栈是向下增长的。 内存映射段是高效的I/O映射方式,用于装载一个共享的动态内存库。用户可使用系统接口创建共享共 享内存,做进程间通信。(Linux课程如果没学到这块,现在只需要了解一下) 堆用于程序运行时动态内存分配,堆是可以上增长的。 数据段–存储全局数据和静态数据。 代码段–可执行的代码/只读常量。 使用realloc对malloc创建的空间进行扩展时会自动把malloc申请的空间释放掉,只需要释放realloc申请的空间。 calloc在申

itxiaobaiiii的博客 326

基于若依的ruoyi-nbcio-plus支持VForm3表单字段数据保存到数据库的一种方法——全网首创(一)

基于若依的ruoyi-nbcio-plus支持VForm3表单字段数据保存到数据库的一种方法——全网首创(一)

宁波阿成的博客 659

93.华为路由器:IPSec加密GRE通道(GRE over IPsec)

IPSec加密GRE通道 由于GRE隧道不提供安全性保障,使用ipsec加密gre隧道是现网中比较常用的VPN部署,它的加密方式分为两种: 可以使用IPsec来加密隧道进行传输,叫做IPsec over GRE; 加密数据流后从隧道传输,称为GRE over IPsec。 下面将配置一个简单的IPsec over GRE实验。 一、搭建模拟环境 首先我们先搭建环境,先根据拓扑图把基本的IP地址配好,然后分别在AR1、AR3加两条静态路由,使得两个公网互通。 [AR1]in g0/0/0 [AR

迷逝 1万+

C++11 std::array 用法小结

std::array 是在 C++11 中引入的,与内置数组相比,std::array是一种更安全、更容易使用的数组类型。与内置数组类似,std::array对象的大小是固定的。因此,std::array不支持添加和删除元素以及改变容器大小的操作。 std::array 除了有传统数组支持随机访问、效率高、存储大小固定等特点外,还支持迭代器访问、获取容量、获得原始指针等高级功能。而且它还不会退化成指针T *给开发人员造成困惑。.........

HelloKandy's Blog 4642

scratch经典游戏主题源码分享,包含了20多款经典游戏

经典游戏案例:1、360度角度射击游戏 2、捕鱼达人 3、超级马里奥 4、超级玛丽 5、吃豆人相关 6、穿着喷气背包的海龟 7、大鱼吃小鱼 8、俄罗斯方块 9、飞机大战 10、愤怒的小鸟 11、黄金矿工 12、节奏大师 13、连连看 14、迷宫游戏 15、跑酷游戏 16、扫雷 17、水果忍者 18、坦克大战 19、推箱子 20、消除泡泡 21、保卫萝卜 22、植物大战僵尸

IT_Scratch的博客 1万+

C/C++ int数组初始化

一、一维数组 C/C++初始化 静态数组 int array[100]; //定义了数组array,但并未对数组初始化; 静态数组 int array[100] = {0}; //定义了数组array,并将数组元素全部初始化为0; 静态数组 int array[100] = {1}; //定义了数组array,并将数组第一个元素初始化为1,后面99个元素初始化为0; 静态数组 int arr...

mayue_web的博客 7万+

24、虚拟地理信息系统:技术与应用的全面解析

本文全面解析了虚拟地理信息系统(虚拟GIS)的技术架构与应用前景。文章从地理空间数据的增长出发,探讨了虚拟GIS在地形、建筑、天气等多维度数据的交互式可视化技术,重点介绍了全球层次结构、多分辨率模型、缓存分页机制及交互导航方法。系统已应用于天气分析、城市规划、应急响应等领域,并展望了未来在数据处理、模拟操作、移动可视化及智能城市、文化遗产保护等方向的发展路径与技术挑战。

v4w5x6的博客 88

pytorch搭建SSAE实现预测分类代码模板完整代码

pytorch搭建SSAE实现预测分类代码模板完整代码

323

Java 基础 —— 数组

创建数组大致包括如下步骤: 声明一个数组类型的引用变量,简称为数组变量; 用new语句构造数组的实例。new语句为数组分配内存,并且为数组中的每个元素赋予默认值; 初始化,即为数组的每个元素设置合适的初始值。 一. 数组变量的声明;声明数组: 1) 一个存放同一类型数据的集合 a. 即可以是基本类型,也可以是对象类型; b. 数组中的每个数据为元素; 2) 数组是一个对象,成员是数组长度

LaurenHUA的实验室 1035

华为OD技术面真题 - 数据库Mysql - 1

汇总华为OD技术面高频Mysql相同问题,提供详细解答。

qq_45776114的博客 1083

Line 9: Char 25: warning: ‘memset‘ call operates on objects of type ‘int‘ while the size is based on

使用memset函数时出现了BUG. void setZeroes(vector<vector<int> >& matrix) { int size1 = matrix.size(); int size2 = matrix[0].size(); int* hang = new int[size1]; int* lie = new int[size2]; memset(hang, 0, sizeof(hang)); //这里的因为初始化不是vector容器

Alanadle的博客 1256

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

java内存分配

我们先来看下JVM架构简图(借用尚硅谷的图) .class文件经过类加载子系统进入运行时数据区,我们着重来说一下栈内存和堆内存 就拿简单的main方法来说 1、main方法进入方法区 2、main方法被JVM自动调用进入栈内存执行,形成一个栈帧,一个方法对应一个栈帧 3、方法中new出来的int[] 在堆内存中开辟空间,产生地址值 4、int[]初始化,开辟三个空间并赋值0,然后通过索引(蓝色数字)来执行下面的赋值语句。 如有不正确的地方,欢迎指正,谢谢。 ...

constantH的博客 123

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

int数组初始化_java数组(一)

数组的定义数组是相同类型数据的有序集合。简单理解就是:数组是由若干个相同类型的数据,按照一定的顺序组合而成的。数组中的每一个数据我们可以称为元素,每个元素可以通过索引(下标)来访问(获取)。数组的一些特性java数组要求所有的元素具有相同的数据类型,因此一个数组只能存储一种数据类型的数据,而不能存储多种数据类型的数据。比如你这个数组是int类型的数组,那这个数组就不能存储boolean float...

weixin_39625098的博客 5890

int数组初始化_Java数组

数组是一组数据的集合,数组中的每个数据称为元素。在Java中,数组也是Java对象,数组中的元素可以是任意类型,但是同一个数组里只能存放相同的元素。创建数组的大致步骤如下:声明一个数组类型的引用类型变量,简称为数组变量。用new语句构造数组实例。new语句为数组分配内存,并且为数组中的每个元素赋予默认初始值。初始化,即为数组中的每个元素设置合适的初始值。数组变量的声明int创建数据对象数组对象和其...

weixin_39624980的博客 7658

java定义int数组_怎样用java定义一个int数组

展开全部数组:是一组相关变量的集合数组是一组相关数据的集合,一个数组实际上就是32313133353236313431303231363533e4b893e5b19e31333363373731一连串的变量,数组按照使用可以分为一维数组、二维数组、多维数组数据的有点不使用数组定义100个整形变量:int i1;int i2;int i3使用数组定义 int i[100];数组定义:int i[10...

weixin_42173205的博客 2万+

java中的数组int[]

数组 数组概念 数组是存储同一种数据类型多个元素的容器。 数组既可以存储基本数据类型,也可以存储引用数据类型。 数组的定义格式 格式1:数据类型[] 数组名; 格式2:数据类型 数组名[]; 注意:这两种定义做完了,数组中是没有元素值的 数组初始化的概述 Java中的数组必须先初始化,然后才能使用。 所谓初始化:就是为数组中的数组元素分配内存空间,并为每个数组元素赋值。 动态初始化:初始化时只指定数组长度,由系统为数组分配初始值 格式:数据类型[] 数组名 = new 数据类型[数组长度]; 数组长度其实就

Javapengyuyan的博客 4万+

java的int数组初始化_java – int数组初始化

首先要理解的是,局部变量存储在堆栈中,这些变量没有使用它们的默认值显式初始化。实例变量存储在堆中,默认情况下使用默认值进行初始化。而且,在堆上也创建对象,无论实例引用变量是否保存其引用,还是本地引用变量。现在,发生的是,当您将数组引用声明为局部变量时,并使用数组初始化:int[] in = new int[5];数组引用(in)存储在堆栈中,为数组分配一个内存,能够在堆上保存5个整数元素(记住,对...

weixin_39588209的博客 4774

C知识点:数组指针【int (*a)[10]-->指向数组的指针】、指针数组【int *a[10]:a是一个一级指针,是数组的首地址,指向一个int指针数据,数组存了10个int指针】

在许多 C 程序中,指针常被用于引用数组,或者作为数组的元素。指向数组的指针常被简称为数组指针(array pointer),而具有指针类型元素的数组则被称为指针数组(pointer array)。

u013250861的博客 1236

c++数组初始化总结

静态数组: //一维数组 int a[10];//定义了长度为10的数组,并未对值进行初始化 int a[10]={};//定义了长度为10的数组,并将所有值初始化为0 int a[10] = {1,2};//定义了长度为10的数组,前两个位置初始化值为1,2,其余位置初始化值为0 //二维数组 int a[10][9];//定义了10×9的数组,并未对值进行初始化 int a[10][9]=...

qq_40692109的博客 2378

【C++基础编程】#018 数组初始化:int a[10] 和 int *a = new int[10]区别

数组是C++中最常见的数据结构之一。 一般来说,有两种方法初始化一个数组(假设数组长度为10): int a[10]; int *a = new int[10]; 下面简单介绍一下这两种方法的区别: 区别一 前者系统会在工作栈中分配空间,系统会自动实现内存的分配和回收。 后者系统会在工作堆中分配空间,系统一般不会自动实现内存的回收,如果数组a使用完毕,需要delete[] a来删除数组a占的内存空间,否则可能会造成内存泄露。 区别二 前者数组长度一般在编译时就固定了,若int a[10],则数组长

杨小浩浩的博客 1732

java 动态int数组_怎样用java定义一个int数组

展开全部数组:是一组相关变量的集合数组是一组相关数据的集合,一个数组实际上就是一连32313133353236313431303231363533e4b893e5b19e31333363373731串的变量,数组按照使用可以分为一维数组、二维数组、多维数组数据的有点不使用数组定义100个整形变量:int i1;int i2;int i3使用数组定义 int i[100];数组定义:int i[10...

weixin_35327421的博客 2074

int数组为什么一般不能用memset初始化每个元素

对于整数型数组,若要是初始化为非0的值时应该使用for循环 而对于字符型 或 0  应该使用memset 函数 如下是可以的,能把数组中的元素值都设置成字符1, #include &lt;iostream&gt; #include &lt;cstring&gt; using namespace std; int main() { char a[5]; memset(a,'1'...

qq1169091731的博客 7597

C语言二维数组初始化陷阱:从内存布局解析int a[][3]与int a[3][]的本质区别

在C语言中,数组是连续内存空间的数据结构,其本质是一维线性存储。多维数组通过编译器提供的语法糖实现,核心原理在于编译器需在编译时确定每个维度的步长以计算元素地址。对于二维数组,列数(第二维)是地址计算的关键因子,必须显式指定,否则编译器无法生成正确的寻址指令。这一特性决定了 `int a[][3]` 的合法性——编译器可从初始化列表推断行数,而 `int a[3][]` 则因列数未知导致编译错误。理解内存的行优先顺序和编译器推断机制,能有效避免数组越界、指针退化等常见陷阱,提升代码在嵌入式系统、算法实现等场

weixin_30904593的博客 391

使用memset初始化int型数组的坑

经验总结很重要

WKX_5的博客 888
上一篇: 操作系统的线性地址
下一篇: pack的讨论
wunderup
博客等级 码龄20年 13粉丝 79原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值