BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #72619同步于 2013/7/15
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖

[问题]C++ 如何算动态数组的大小

lcl13hope
2013/7/15镜像同步11 回复
char *p; p = new char[1024]; 然后往p指向的空间中写数据,如何知道我写的数据是否写了开辟空间的大小呢?
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
LafengHu机器人#1 · 2013/7/15
你写的时候,不移动指针么?
lcl13hope机器人#2 · 2013/7/15
【 在 LafengHu 的大作中提到: 】 : 你写的时候,不移动指针么? 要移动的,我是从二进制文件里读取一段内容到设定的好动态数组中,然后想知道我读到的数据是否正确,才有了上面的问题
LafengHu机器人#3 · 2013/7/15
根据指针的offset,不就可以计算出写进buffer里多少数据了么? 另外,一般的read之类的函数,不都有返回值么?返回值就是byte数。。 还是我没搞懂你的问题? 【 在 lcl13hope 的大作中提到: 】 : 要移动的,我是从二进制文件里读取一段内容到设定的好动态数组中,然后想知道我读到的数据是否正确,才有了上面的问题
lcl13hope机器人#4 · 2013/7/15
【 在 LafengHu 的大作中提到: 】 : 根据指针的offset,不就可以计算出写进buffer里多少数据了么? : 另外,一般的read之类的函数,不都有返回值么?返回值就是byte数。。 : 还是我没搞懂你的问题? 囧。。read原来返回的是所读入缓冲区的末尾地址,初学,嘿嘿,offset 的话是我自己给定的 比如: fstream file; char *buf; file.open(filename,ios::binary||ios::in); file.seekg(0,file.end); int l = file.tellg(); file.seekg(0,file.beg); buf = new char[l]; cout<<file.read(buf,l); //00C7F7B8 缓冲区的末尾地址 这里的l,应该就是您说的offset了,但是我想知道是否是按照我定义地读取了这么多,怎么判断呢,就是说如果读少了或读多了?另外 还想请教下 怎么拿到返回的指针值呢,int a = file.read(buf,l);还是?
LafengHu机器人#5 · 2013/7/15
cout输出的就是读到的字节数吧。。就是file.read()那里。 看看MSDN?关于这个函数的说明? 如果没有读那么多,返回的是实际读到的字节数。 你这种调用,指针在用户空间是不移动的,就是指向buffer的首地址。 囧了都,你打印出来看看? 【 在 lcl13hope 的大作中提到: 】 : 囧。。read原来返回的是所读入缓冲区的末尾地址,初学,嘿嘿,offset 的话是我自己给定的 : 比如: : fstream file; : ...................
lcl13hope机器人#6 · 2013/7/15
【 在 LafengHu 的大作中提到: 】 : cout输出的就是读到的字节数吧。。就是file.read()那里。 : 看看MSDN?关于这个函数的说明? : 如果没有读那么多,返回的是实际读到的字节数。 : ................... 还没睡啊!辛苦...真心感谢 试过了 file.read()打印地就是后面的尾地址00C7F7B8
lcl13hope机器人#7 · 2013/7/15
【 在 LafengHu 的大作中提到: 】 : cout输出的就是读到的字节数吧。。就是file.read()那里。 : 看看MSDN?关于这个函数的说明? : 如果没有读那么多,返回的是实际读到的字节数。 : ................... 请问 那更好地方式是该如何组织函数地调用呢..
LafengHu机器人#8 · 2013/7/15
不知道~ 好久木有搞c++了! 去查msdn吧,关于file的read函数,肯定一查就查出来了! 【 在 lcl13hope 的大作中提到: 】 : 请问 那更好地方式是该如何组织函数地调用呢..
LafengHu机器人#9 · 2013/7/15
如果read返回的是个地址,可以试试用这个地址减去原来buffer的地址? 囧,我也是个渣,睡了,你自己搞搞吧~ 【 在 LafengHu 的大作中提到: 】 : 不知道~ 好久木有搞c++了! : 去查msdn吧,关于file的read函数,肯定一查就查出来了!