进来看一看!!

flysundy 2003-02-21 05:06:46
我计划将LPBYTE StegoMesg中的每个元素的最后一位取出来,然后再组成新的字节;其中N为StegoMesg中BYTE的个数;m_pExMesg是最后得到的LPBYTE,如下:
BYTE* BitSingle = new BYTE[N];
if(BitSingle == NULL) return(FALSE);
for(LONG i=0;i<(LONG)N;i++)
{
*BitSingle=(*(StegoMesg+i))&0x01;
BitSingle++;
}
for(i=0;i<N;i+=8)
{
for(LONG j=0;j<8;j++)
{
(*m_pExMesg)+=BitSingle[i+j]<<(7-j);
}
m_pExMesg++;
}
delete[] BitSingle;
编译通过,运行是出错:”Unhandled exception in ****.exe(MSVCRTD.DLL):0xc00005:Access Violation.
为什么??请指教!!!
...全文
25 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
flysundy 2003-02-24
  • 打赏
  • 举报
回复
没人来了,结帐了!
flysundy 2003-02-21
  • 打赏
  • 举报
回复
请问:
能不能把new 和delete分置于同一文件中的两个不同的函数内??
flysundy 2003-02-21
  • 打赏
  • 举报
回复
是不是应该这样,BYTE* a= BitSingle

for(LONG i=0;i<(LONG)8*N;i++)
{
*a=(*(StegoMesg+i))&0x01;
a++;
}
lqqchen 2003-02-21
  • 打赏
  • 举报
回复
原来的程序很糊涂,所谓的改正也很糊涂.
=================
for(LONG i=0;i<(LONG)N;i++)
{
*BitSingle=(*(StegoMesg+i))&0x01;
BitSingle++;
}
================
这个操作以后, BitSingle指向哪儿去了?
记住你是在移动指针啊...
您是初学者吧,建议你学习指针的时候,可以自己画一个指针指向内容的图式(就象谭浩强先生的书一样的),这样比较好理解.
flysundy 2003-02-21
  • 打赏
  • 举报
回复
对,应该该成:
for(LONG i=0;i<(LONG)8*N;i++)
for(i=0;i<8*N;i+=8)
对吧?还有错的吗?这样还是出错,就是没有了MSVCRTD.DLL
earthharp 2003-02-21
  • 打赏
  • 举报
回复
BitSingle[i+j]越界。
flysundy 2003-02-21
  • 打赏
  • 举报
回复
是不是没人有耐心看啊,很简单的程序啊

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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