【发布时间】:2013-06-23 14:50:34
【问题描述】:
我已经阅读了许多与此问题相似但尚未找到任何答案的问答:
我必须对 fillbyte 函数中的动态字节数组进行一些分配,如下所示:
int Error;
result = fillbyte (&Error);
如果我评论下面显示的行,一切正常。但是如果该行被执行,则第二次调用此函数时,将引发访问冲突异常,但是第一次代码正常运行并且一切正常。我似乎找不到这行代码或用密码字节填充数组的其他方法的问题。
Bool fillbyte(int *Error)
{
byte BCC;
byte *Packet1 = new byte;
*Packet1 = 0x01;
*(Packet1+1) = 'P';
*(Packet1+2) = '1';
*(Packet1+3) = STX;
*(Packet1+4) = '(';
int add = sizeof(readingprops.password)*2;
for(int i=0;i<add;i++)
{
*(Packet1+(5+i)) = readingprops.password[i]; //this line raises the problem
}
*(Packet1+add+5) = ')';
*(Packet1+add+6) = ETX;
BCC = calc.CalcBCC(Packet1,add+7);
*(Packet1+add+7) = BCC;
SerialPort.Write(Packet1,add+8);
delete Packet1;
return true;
}
任何帮助将不胜感激
【问题讨论】:
-
好吧,分配一个
byte,然后使用它,因为它还有更多。 -
用
byte *Packet1 = Readstr;替换byte *Packet1 = new byte; -
但我不知道数组的大小。我应该使用一个大的初始化数组和我填写的字节数吗?我在同一个函数中有很多吸块,我打算在所有块中使用那个“Packet1”,因为它只是一个地址
-
@ctn no
Readstr与Packet1没有任何关系,我应该编辑我的函数以免被误解 -
@arianoo 你知道大小:它是
add + 8,你甚至在调用SerialPort.Write时这么说(但你对add的计算看起来很奇怪)。
标签: c++ arrays visual-c++