C++分配动态数组内存的问题
intx=ar.size()/1048576;inty=ar.size()%1048576;char*buff[x+1];for(inti=0;i<x;i++){buff...
int x = ar.size()/1048576;
int y = ar.size()%1048576;
char *buff[x + 1];
for(int i = 0; i < x; i++)
{
buff[i] = new char[(ar.size() - y)/x + 1];
}
这里的ar.size()是动态的,
报的错误是[C++ Error] filesendu.cpp(218): E2313 Constant expression required
我知道应该是内存分配的问题,可是不知道该怎么写,求帮助 展开
int y = ar.size()%1048576;
char *buff[x + 1];
for(int i = 0; i < x; i++)
{
buff[i] = new char[(ar.size() - y)/x + 1];
}
这里的ar.size()是动态的,
报的错误是[C++ Error] filesendu.cpp(218): E2313 Constant expression required
我知道应该是内存分配的问题,可是不知道该怎么写,求帮助 展开
4个回答
展开全部
如果就是分配一个数组的可以这样
int x = ar.size()/1048576;
int y = ar.size()%1048576;
char *buff[x + 1]; =>改为char *buff; 在这里声明一个指针
buff = new char[(ar.size() - y)/x + 1]; =>让这个指针指向这个分配的数组
但是看你题目的意思好像是要分配很多个数组,这就要用到二维数组,应是指针的指针:
int x = ar.size()/1048576;
int y = ar.size()%1048576;
char *buff[x + 1]; =>改为char **buff;
buff = (char**)malloc(sizeof(char*)*x); =>分配一个char*的数组
//PS:这里我试了一下,要是不用malloc,可以这样buff = (int**)(new int[x]);
for(int i = 0; i < x; i++)
{
*(buff+i) = new char[(ar.size() - y)/x + 1];
}
这样就可以用了
int x = ar.size()/1048576;
int y = ar.size()%1048576;
char *buff[x + 1]; =>改为char *buff; 在这里声明一个指针
buff = new char[(ar.size() - y)/x + 1]; =>让这个指针指向这个分配的数组
但是看你题目的意思好像是要分配很多个数组,这就要用到二维数组,应是指针的指针:
int x = ar.size()/1048576;
int y = ar.size()%1048576;
char *buff[x + 1]; =>改为char **buff;
buff = (char**)malloc(sizeof(char*)*x); =>分配一个char*的数组
//PS:这里我试了一下,要是不用malloc,可以这样buff = (int**)(new int[x]);
for(int i = 0; i < x; i++)
{
*(buff+i) = new char[(ar.size() - y)/x + 1];
}
这样就可以用了
展开全部
char* buffer[x-1]里的x改成一个常量,不能声明变长数组;如果担心长度不够用可以设大点,比如100000
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我定义了一个结构体用于动态分配一个指定下标范围的数组创建,元素存储和提取bool fatch(const IntArray
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
就是这一行出的错误:char *buff[x + 1];
改为这样就可以了:char *buff = new char(x+1);
改为这样就可以了:char *buff = new char(x+1);
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询