BYTE数组之间的复制?

戈壁上的月光 2009-01-20 03:47:41

//定义了一个BYTE类型的数组
m_byte[512*1024];
//m_byte数组用读取文件的方式赋值
read= fread(m_byte,1,count,fp);
//现在我定义了一个结构体
typedef struct comInfo
{
CString name;
BYTE m_codedata[512*1024];
} comInfo;
//定义一个结构体数组变量
comInfo com[11];
com[i].name="名字";
//怎么样将m_byte赋值给com[i].m_codedata ?
//还有就是C++里面的数组定义的时候非的指定长度吗,应该可以动态增长吧,要怎么写!谢谢各位!并祝各位新年快乐!
...全文
1053 25 打赏 收藏 转发到动态 举报
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
bdzwj 2009-01-21
  • 打赏
  • 举报
回复
重新封装一下comInfo, 利用成员函数分配内存,析构函数中释放

typedef struct comInfo
{
CString name;
BYTE *m_codedata;

comInfo() : name(_T("")),m_codedata(NULL){}
~comInfo()
{
if (m_codedata != NULL)
delete [] m_codedata;
}
void setdata(const BYTE* buffer, int size)
{
m_codedata = new BYTE(size);
memcpy(m_codedata,buffer,size);
}
} comInfo;
//定义一个结构体数组变量
comInfo com[11];
com[i].name="名字";
com[i].setdata(m_byte,size);

戈壁上的月光 2009-01-21
  • 打赏
  • 举报
回复
[Quote=引用 20 楼 bobob 的回复:]
引用 12 楼 harvest2006 的回复:
引用 5 楼 fairyprince 的回复:
c++中没有动态数组根念,如果想改变大小,只能重新分配!
通过重新分配,可以实现你所要的功能!

重新分配能保留以前的数据吗?


要想保留以前数据,可以用malloc分配,realloc重新分配,free释放。realloc可以保留以前数据
[/Quote]
可以详细点吗,半年没有碰C++语法都忘了!
戈壁上的月光 2009-01-21
  • 打赏
  • 举报
回复
可以详细点吗,半年没有碰C++语法都忘了!
戈壁上的月光 2009-01-21
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 harvest2006 的回复:]
还有个问题就是Maintain.exe 中的 0x004193d5 处未处理的异常: 0xC00000FD: Stack overflow 。
应该是内存溢出,该怎么解决呢?
[/Quote]
这个问题一直没有人回答,这个是首要问题,还请各位帮忙!
yc_8301 2009-01-21
  • 打赏
  • 举报
回复
顶楼上。。。
可以重新分配,之后再把原来的数据copy带新的内存中而实现动态数组。。
bobob 2009-01-21
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 harvest2006 的回复:]
引用 5 楼 fairyprince 的回复:
c++中没有动态数组根念,如果想改变大小,只能重新分配!
通过重新分配,可以实现你所要的功能!

重新分配能保留以前的数据吗?
[/Quote]

要想保留以前数据,可以用malloc分配,realloc重新分配,free释放。realloc可以保留以前数据
lwx300 2009-01-21
  • 打赏
  • 举报
回复
可以考虑使用 malloc、realloc、free 函数。
戈壁上的月光 2009-01-21
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 qq14923349 的回复:]
都说叫你按我的方法做

char *buf=new char[x];

delete []buf;
[/Quote]
重新分配能保留以前的数据吗?
Eleven 2009-01-21
  • 打赏
  • 举报
回复
vector来做
biweilun 2009-01-20
  • 打赏
  • 举报
回复
memcpy函数复制数据最好不过了。
至于长度要增加,可以用new动态申请,地址进行连接就好了
Amistie 2009-01-20
  • 打赏
  • 举报
回复
要是想动态分配数组的话,可以考虑使用vector来做!
qq14923349 2009-01-20
  • 打赏
  • 举报
回复
都说叫你按我的方法做

char *buf=new char[x];

delete []buf;

戈壁上的月光 2009-01-20
  • 打赏
  • 举报
回复
还有个问题就是Maintain.exe 中的 0x004193d5 处未处理的异常: 0xC00000FD: Stack overflow 。
应该是内存溢出,该怎么解决呢?
戈壁上的月光 2009-01-20
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 fairyprince 的回复:]
c++中没有动态数组根念,如果想改变大小,只能重新分配!
通过重新分配,可以实现你所要的功能!
[/Quote]
重新分配能保留以前的数据吗?
qq14923349 2009-01-20
  • 打赏
  • 举报
回复
用new要用delete []buf清除空间
Cpp权哥 2009-01-20
  • 打赏
  • 举报
回复
不管什么数组都可以用memcpy来复制。
如果希望能够动态增长,你可以用CArray<BYTE,BYTE>来做BYTE数组,用这个类的Copy函数来实现数组的复制,需要头文件#include <afxtempl.h>。
纯冰糖 2009-01-20
  • 打赏
  • 举报
回复
memcpy函数就可以了

memcpy(..,..,sizeof(..)/sizeof(BYTE));
ok1234567 2009-01-20
  • 打赏
  • 举报
回复
动态指定长度

typedef struct comInfo
{
CString name;
int iLen;
BYTE *pcodedata;
} comInfo;
//------
comInfo com1;
com1.iLen = 1587;
com1.pcodedata = new BYTE[iLen];
fandh 2009-01-20
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 ok1234567 的回复:]
memcpy(com[i].m_codedata,m_byte,512*1024);
[/Quote]
这样是可以的!最简单!
lwx300 2009-01-20
  • 打赏
  • 举报
回复
CByteArray
加载更多回复(5)

16,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧