读书人

char* a = new char(100000) 到底是数

发布时间: 2013-10-19 20:58:22 作者: rapoo

char* a = new char(100000) 到底是数组还是仅仅是分配了内存空间?
char* a = new char(100000) 到底是数组还是仅仅是分配了内存空间?
这个数组或者说分配的内存空间是连续的吗?
谢谢
[解决办法]
不是数组,一个 char 而已,初始值 100000,数字还溢出了。
数组用这个 char* a = new char [100000],释放用 delete [] a;

[解决办法]
是个数组。
肯定会占用内存的。
标准保证地址连续,且是数组下标的严格单调增函数。
[解决办法]
char* a=new char[10000];
a字符数组已经分配空间了,内存连续。
[解决办法]
char* a = new char(100000) 到底是数组还是仅仅是分配了内存空间?
a是一片内存的的入口,使用上,你当作指针或者数组都可以,但是,如果当作指针,你改变指针之前,必须保留一分拷贝

这个数组或者说分配的内存空间是连续的吗?
逻辑上肯定是连续的,但在物理上,不一定由操作系统决定

[解决办法]

引用:
Quote: 引用:

不是数组,一个 char 而已,初始值 100000,数字还溢出了。
数组用这个 char* a = new char [100000],释放用 delete [] a;

我写错了,是char* a = new char [100000]
那么char* a = new char [100000] 是一个数组还是仅仅是一个内存区域呢
不管是数组还是内存区域,这个内存区域一定是连续的吗?

两个说法均是正确的,内存区域一定是连接的。
[解决办法]
引用:
Quote: 引用:

char* a = new char(100000) 到底是数组还是仅仅是分配了内存空间?
a是一片内存的的入口,使用上,你当作指针或者数组都可以,但是,如果当作指针,你改变指针之前,必须保留一分拷贝

这个数组或者说分配的内存空间是连续的吗?
逻辑上肯定是连续的,但在物理上,不一定由操作系统决定

谢谢,保留一份COPY的目的是为了delete?
delete比如从首地址开始delete?
delete的机制是什么呢?

正确
delete 通知操作系统内存管理程序,告诉他:这空间你不用了,还给你吧

读书人网 >C++

热点推荐