在用new分配空间时要特别注意初始化现象。也许会因为初始化而使得内存不能用。
例如下面代码的操作就会出现异常。
char * str;
str=new char[5]="abc";
str[1]='a';//出现异常
delete str;//出现异常(轮不到这个异常)
经过测试:
str[0]='a';//也会出现异常
所以我猜测:
str=new char[5]="a";并没有去申请一个5个字符的内存空间,然后初始化为"a"。而是提取了"a"的首地址返回。因为"a"是一个常量,str[1]='a'和delete str自然就会出现异常。
这种情况又相当于char * str="abc" 与 char str[]="abc"情况不同.后者会给str分配一个四字节的空间,并且其内容可以改变。
如何证明str=new char[5]="abc"与"abc"指向同一个内存呢?
看如下代码:
char string[5]="abc";
char * str;
str=new char[5]=string;
str[1]='a';
cout<<string<<endl;
这样输出的结构为:aac,改变了原来的字符串。
分享到:
相关推荐
//在定义数组时,如果确定数组的各个元素,可以进行静态初始化 ,在创建数组时,给数组元素赋初值 int [] data2 = new int[] {34,56,765,78}; //注意静态初始化时,不需要指定数组的长度 //通过foreach循环遍历, 增强的...
一维数组 可按下面的示例所示声明五个整数的...数组初始化 可以在声明数组时将其初始化,在这种情况下不需要级别说明符,因为级别说明符已经由初始化列表中的元素数提供。例如: int[] array1 = new int[] { 1, 3, 5,
首先给大家介绍javascript jquery中定义数组与...此时为a已经开辟了内存空间,包含10个元素,用数组名称加 [下标] 来调用,例如 a[2] 但此时元素并未初始化,调用将返回 undefined 以下代码定义了个可变数组,并进行赋
数据的初始化有二种形式工:定义是赋值,或初始化(NEW运算后)赋值二种形式。 数据也是对象。 数组的copy; 如:int a[]=new int[10]; int b[]=new int[10]; for(int i=0;i;i++)a[i]=i; for(int i=0;i;i+...
x在提供数组初始化器时不能定义维度表达式 int[] numbers = new int[3]; int[] numbers = new int[3]; numbers[numbers.Length] = 42; x int[][] numbers = {{ 42, 84 }, { 84, 42 }}; 5、已知数组为...
下面创建一个字符串"Hello",由于在数组的末尾存储了NUL,所以字符数组的大小比单词"Hello"的字符数多1:根据数组初始化规则,可以把上面的语句写成如下
在C#中分隔字符串时,按特定字符进行分隔的时候可能会遇到空值,如何我现在传入的是Id的字符串,如:"1501,1502,1503,,1505",以逗号分隔,由于各种原因,导致传入的字符串中有连续的逗号,如果我要利用这一串...
7.4.2 字符数组的初始化 54 7.4.3 字符数组的引用 54 7.4.4 字符串与字符串结束标志 55 7.4.5 字符数组的输入输出 56 7.4.6 字符串处理函数 58 7.4.7 字符数组应用举例 60 习题 61 第8章 文件 63 8.1 C语言...
此时为a已经开辟了内存空间,包含10个元素,用数组名称加 [下标] 来调用,例如 a[2] 但此时元素并未初始化,调用将返回 undefined。以下代码定义了个可变数组,并进行赋值。 代码如下:var a = new Array();a[0] = 10...
7.3.2 字符数组的初始化 89 7.3.3 字符数组的引用 90 7.3.4 字符串和字符串结束标志 91 67.3.5 字符数组的输入输出 91 7.3.6 字符串处理函数 92 7.4 程序举例 94 本章小结 97 8 函 数 8.1 概述 98 8.2 函数定义的...
7.3.2 字符数组的初始化 89 7.3.3 字符数组的引用 90 7.3.4 字符串和字符串结束标志 91 67.3.5 字符数组的输入输出 91 7.3.6 字符串处理函数 92 7.4 程序举例 94 本章小结 97 8 函 数 8.1 概述 98 8.2 函数定义的...
实例080结构体变量的初始化 实例081如何使用嵌套结构 实例082将结构作为参数传递并返回 实例083共用体数据类型的定义 实例084共用体变量的初始化 实例085如何使用匿名共用体 实例086枚举类型的定义与使用 实例087用...
Ruby数组是有序的,任何对象的??整数索引的集合。...有许多方法来创建或初始化一个数组。一种方式是 new 类方法: names = Array.new 可以设置一个数组的大小,在数组创建的时候: names = Array.new
14.15 字符数组 14.16 重载数组下标操作符 14.17 总结 第15章 链表 15.1 声明链表结构 15.2 简单的图书链表 15.2.1 图书链表 15.2.2 类的链表 15.3 动态链表 15.3.1 动态链表的建立 15.3.2 解决输入字符造成死循环...
14.15 字符数组 14.16 重载数组下标操作符 14.17 总结 第15章 链表 15.1 声明链表结构 15.2 简单的图书链表 15.2.1 图书链表 15.2.2 类的链表 15.3 动态链表 15.3.1 动态链表的建立 15.3.2 解决输入字符...
第一种:直接使用一个数组来初始化缓存区 var arr = [0,1,2] var buf = new Buffer(arr) console.log(buf) 执行效果: 第二种:直接使用一个字符串来初始化缓存区 var str = 'hello' var buf = new Buffer(str...
什么是字符数组,什么是字符串,有区别吗? 以上建议 10 天以内复习彻底 你能说出函数的调用,函数的参数,函数的申明,函数的返回值是怎么样的概念吗?你编写过递归函数吗? 什么叫指针,什么叫地址,什么叫指针...
初始化 初始化map对象的三种⽅式 对象的三种⽅式 // 初始化map的三种⽅式 const map1 = new Map() map1.set(60, '及格') map1.set(80, '良') map1.set(90, '优秀') // 第⼆种⽅式 set⽅法返回的是当前map对象,因此...
B 初始化times C “获得”用户输入的 数据input D times++ E “检查”answer 和 input 的匹配情况 {数量,位置} F “提示”检查结果(times,数量,位置) G 如果检查结果是 5 5 游戏就结束了! H 返回 C 4) ...