Java 字节[]接收字节=新字节[缓冲区];

Java 字节[]接收字节=新字节[缓冲区];,java,c,Java,C,我需要以下代码行的帮助。我正在用C编写代码,我需要用Java替换下面的代码行。 因此,请帮助我,并建议我如何修改我的C代码的一些替代方案。我在等一行代码。 谢谢 byte[] receiverByte = new byte[BUFFER]; 如果使用C++编译器,则为: char* receiverByte = new char[BUFFER_SIZE ]; C中的else: char* receiverByte = malloc( BUFFER_SIZE ); 请记住,C不像Java那样

我需要以下代码行的帮助。我正在用C编写代码,我需要用Java替换下面的代码行。 因此,请帮助我,并建议我如何修改我的C代码的一些替代方案。我在等一行代码。 谢谢

byte[] receiverByte = new byte[BUFFER];

如果使用C++编译器,则为:

char* receiverByte = new char[BUFFER_SIZE ];
C中的else:

char* receiverByte = malloc( BUFFER_SIZE );
请记住,C不像Java那样是内存管理的,因此在完成后需要调用delete来释放内存:

所以对于C++:

delete[] receiverByte;
对于C:

free( receiverByte );
还可以在堆栈上创建固定大小的数组。必须在编译时指定大小缓冲区大小,并且向量大小不能更改或增长:

char receiverByte[BUFFER_SIZE];
<>编辑:如果你使用C++编译器,你也可以访问STL库,它不需要直接使用NeX[]和Dele[]:< /P>
#include <vector>
...
std::vector<char> receiverByte;
receiverByte.resize( BUFFER_SIZE );
#包括
...
std::向量接收器字节;
receiverByte.resize(缓冲区大小);

如果使用C++编译器,则为:

char* receiverByte = new char[BUFFER_SIZE ];
C中的else:

char* receiverByte = malloc( BUFFER_SIZE );
请记住,C不像Java那样是内存管理的,因此在完成后需要调用delete来释放内存:

所以对于C++:

delete[] receiverByte;
对于C:

free( receiverByte );
还可以在堆栈上创建固定大小的数组。必须在编译时指定大小缓冲区大小,并且向量大小不能更改或增长:

char receiverByte[BUFFER_SIZE];
<>编辑:如果你使用C++编译器,你也可以访问STL库,它不需要直接使用NeX[]和Dele[]:< /P>
#include <vector>
...
std::vector<char> receiverByte;
receiverByte.resize( BUFFER_SIZE );
#包括
...
std::向量接收器字节;
receiverByte.resize(缓冲区大小);

如果将
缓冲区定义为宏:

#define BUFFER 1234
unsigned char receiveBuffer[BUFFER];
或使用动态分配:


第一个示例也是如此。

如果将
缓冲区定义为宏:

#define BUFFER 1234
unsigned char receiveBuffer[BUFFER];
unsigned char receiverByte[BUFFER];
或使用动态分配:

第一个例子也是如此

unsigned char receiverByte[BUFFER];

以及:

但是这里的动态数组将更加复杂(测试NULL)

编辑::

#包括
尺寸3(整数n)
{
字符b[n+3];//可变长度数组
返回sizeof b;//执行时间sizeof
}
int main()
{
大小;
size=fsize3(10);//fsize3返回13
返回0;
}

以及:

但是这里的动态数组将更加复杂(测试NULL)

编辑::

#包括
尺寸3(整数n)
{
字符b[n+3];//可变长度数组
返回sizeof b;//执行时间sizeof
}
int main()
{
大小;
size=fsize3(10);//fsize3返回13
返回0;
}

我建议使用
无符号字符*
,因为它类似于C中的一个字节。因此:

unsigned char* receiverByte = malloc(BUFFER * sizeof(unsigned char));


我建议使用
无符号字符*
,因为它类似于C中的一个字节。因此:

unsigned char* receiverByte = malloc(BUFFER * sizeof(unsigned char));



如果“buffer_SIZE”不是一个常量值,这将不起作用,而对于
C
则需要一个宏。对于C++,不应该使用新的、免费的、简单的使用STD::vector或STD::ARayy注释是基于这个答案的以前版本,并且自从呈现“MOFTITE”就不起作用了,如果“BuffFixSead”不是一个常量值,对于<代码> C <代码>将需要一个宏。对于C++,你不应该使用新的和免费的、简单的使用STD::vector或STD::ARayy注释是基于这个答案的以前版本,并且已经被渲染了MOOTU不应该键入分配的返回(或者参数到免费< /代码>函数)。静态双精度[]卫星数据=新双精度[19][4];静态双精度[]卫星数据未使用=新双精度[19][4];静态双精度[]sbas_数据=新双精度[4][2];此外,我还需要将以下行从java转换为cHowever,我认为您应该在malloc参数中乘以sizeof(unsigned char)。@user1954391请更新您的问题。。。您的代码段在注释中不可读(并且它不属于注释中)。您不应键入分配返回(或
free
函数的参数)。您不需要从malloc强制转换!静态双精度[]卫星数据=新双精度[19][4];静态双精度[]卫星数据未使用=新双精度[19][4];静态双精度[]sbas_数据=新双精度[4][2];此外,我还需要将以下行从java转换为cHowever,我认为您应该在malloc参数中乘以sizeof(unsigned char)。@user1954391请更新您的问题。。。你的代码片段在评论中不可读(它不属于那里),你真的想要
C
而不是
C++
?那么,你想要Java代码作为答案吗?似乎大多数答案都错了。你真的想要
C
而不是
C++
?那么,你想要Java代码作为答案吗?似乎大多数答案都错了。还应该补充一点,如果缓冲区不是编译时常量,第一种情况将不起作用。如果大小是固定的,并且在编译时就知道了,那么您就应该这样做。@Crog:您可能会感到惊讶。瞧,你说得很对,我确实记得这件事,但忽略了它。作为Visual Studio用户,我们没有获得所有/任何C99标准支持:(还应添加第一种情况,如果缓冲区不是编译时常数,则第一种情况不起作用。如果大小在编译时是固定的且已知的,则您应该这样做。@Crog:您可能会感到惊讶。请看EDITYou,您是非常正确的,我确实记得这一点,但忽略了它。作为Visual Studio用户,我们没有获得所有/任何C99标准支持:(