动态分配空数组
来源:互联网 发布:seo自学论坛 编辑:程序博客网 时间:2024/05/29 09:20
C++虽然不允许定义长度为0的数组变量,但明确指出,调用new动态创建长度为0的数组是合法的。
char arr[0] ; //错误
char *cp = new char[0] ; //正确
用new动态创建长度为0的数组时,new返回有效地非零指针。该指针与new返回的其他指针不同,不能进行解引用操作,它毕竟没有指向任何元素。
可以做的操作:比较运算,因此该指针能在循环中使用;在该指针上加减0;或减去本身,得0值。
动态分配的内存最后必须进行释放,否则,内存最终将会逐渐耗尽。如果不在需要使用动态创建的数组,必须显式地将其占用的存储空间返还给程序的自由存储区。C++语言为指针提供delete[]表达式释放指针所指向的数组空间。
delete [ ] pia; //该语句回收了pia所指向的数组,把相应的内存返还给自由存储区。如果漏掉了空方括号,这是一个编译器无法发现的错误,将导致程序在运行时出错。
理论上,回收数组时缺少空方括号对,至少会导致运行时少释放了内存空间,从而产生内存泄露。对于某些系统或元素类型,可能更严重的运行时错误。
通常是因为在编译时无法知道数组的维数,所以才需要动态创建该数组。采用这种技术要比建立固定大小的数组安全。
标准库函数strlen返回的是字符串的长度,并不包括字符串结束符 ,在获得的字符串长度必须 加1以便在动态分配时预留结束符的存储空间。
0 0
- 动态分配空数组
- 动态分配数组
- 动态分配数组
- 动态分配数组
- 动态分配数组
- 动态分配数组
- 动态分配数组
- c++数组的动态分配
- 动态分配二位数组
- 动态分配二维数组
- 动态分配二维数组
- 如何动态分配二维数组
- 如何动态分配多维数组
- new 动态分配数组空间
- 动态分配二维数组
- 动态分配数组空间
- 动态分配二维数组
- 动态分配二维数组
- 网络通信框架Volley使用详细说明
- Oracle 数据库笔记
- 《unix高级环境编程》进程控制——system函数
- java源码——计算不同图形的周长和面积
- 网站渗透思路全方面总结
- 动态分配空数组
- ioctl() 获得硬盘序列号
- Eclipse中JVM的介绍及设置
- VLFeat开源库的配置
- textField和textView字数限制
- Log4Net 写入日志文件
- 《unix高级环境编程》进程控制——进程时间
- Live555接收h264使用ffmpeg解码为YUV42
- openwrt环境搭建