首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >byte[] receiverByte =新的byte[BUFFER];

byte[] receiverByte =新的byte[BUFFER];
EN

Stack Overflow用户
提问于 2013-02-27 16:40:40
回答 4查看 417关注 0票数 1

我需要一些关于下面这行代码的帮助。我正在用C编写代码,我需要用Java替换下面这行代码。因此,请帮助我,并建议一些替代方案,让我可以为我的C代码修改它。我在等待一行代码。谢谢..

代码语言:javascript
运行
复制
byte[] receiverByte = new byte[BUFFER];
EN

回答 4

Stack Overflow用户

发布于 2013-02-27 16:41:50

代码语言:javascript
运行
复制
byte[] receiverByte = new byte[BUFFER_SIZE ];

如果使用C++编译器,则如下所示:

代码语言:javascript
运行
复制
char* receiverByte = new char[BUFFER_SIZE ];

C中的else:

代码语言:javascript
运行
复制
char* receiverByte = malloc( BUFFER_SIZE );

但请记住,C不像Java那样管理内存,因此当您完成时,您将需要调用delete来释放内存:

因此,对于C++:

代码语言:javascript
运行
复制
delete[] receiverByte;

对于C语言:

代码语言:javascript
运行
复制
free( receiverByte );

你也可以在堆栈上创建一个固定大小的数组。必须在编译时指定大小BUFFER_SIZE,并且向量大小不能更改或增长:

代码语言:javascript
运行
复制
char receiverByte[BUFFER_SIZE];

编辑:如果你使用的是c++编译器,你也可以访问STL库,这样就不需要直接使用new[]和delete[]了:

代码语言:javascript
运行
复制
#include <vector>
...
std::vector<char> receiverByte;
receiverByte.resize( BUFFER_SIZE );
票数 2
EN

Stack Overflow用户

发布于 2013-02-27 16:43:25

如果将BUFFER定义为宏:

代码语言:javascript
运行
复制
#define BUFFER 1234
unsigned char receiveBuffer[BUFFER];

或者在malloc()中使用动态分配

代码语言:javascript
运行
复制
#include <stdlib.h>
unsigned char *receiveBuffer = malloc(BUFFER);

正如@mic_e提到的,您应该将BUFFERunsigned char的大小相乘,以获得更多的平台无关性,第二个示例变成:

代码语言:javascript
运行
复制
unsigned char *receiveBuffer = malloc(BUFFER * sizeof(unsigned char));

第一个例子也是如此。

票数 2
EN

Stack Overflow用户

发布于 2013-02-27 16:45:02

代码语言:javascript
运行
复制
unsigned char receiverByte[BUFFER];

代码语言:javascript
运行
复制
unsigned char* receiverByte = malloc(BUFFER);
if (!receiverByte ) my_do_with_error(....);

和:

代码语言:javascript
运行
复制
double data[19][4];

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

代码语言:javascript
运行
复制
int M= 19, N= 4;
double **data   =malloc(sizeof( *data)*M);
         data[0]=malloc(sizeof(**data)*M*N);
for(int i=1; i<M; ++i) data[i] =data[0]+i*N;

.

代码语言:javascript
运行
复制
free(data[0]);
free(data);

编辑:In 6.5.3.4 of the C standard we can find

代码语言:javascript
运行
复制
#include <stddef.h>
size_t fsize3(int n)
{
  char b[n+3];     // variable length array
  return sizeof b; // execution time sizeof
}
int main()
{
  size_t size;
  size = fsize3(10); // fsize3 returns 13
  return 0;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15107531

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档