为二维数组动态分配内存时出错
Error While dynamically allocating memory for a two - D array
我正在实现一个二维数组动态内存分配。在编译程序时,我遇到了一个错误。代码如下:-
# include<iostream>
# include<stdio.h>
# include<conio.h>
# include<stdlib.h>
# define COLS 5
using namespace std;
typedef int Rowarray[COLS];
int main()
{
Rowarray *rptr;
int nrows=3;
int row,col;
rptr=(int**)malloc(nrows * COLS * sizeof(int)) ; // Error Line
for(row=0;row<nrows;row++)
{ static int i=0;
for(col=0;col <COLS;col++,i++)
{
rptr[row][col]=i;
}
}
for(row=0;row<nrows;row++)
{
for(col=0;col <COLS;col++)
{
cout << "n" << rptr[row][col];
}
}
getch();
return 0;
}
我得到的错误是分配`
cannot convert int**' to
int(*)[5]如果用普通new
替换难看的malloc
rptr= new Rowarray[nrows];
您的程序可以编译甚至运行。别忘了delete [] rptr;
。
但为什么不使用矢量呢?
#include <vector>
//...
std::vector<std::vector<int> >rptr;
尝试删除malloc左侧的强制转换(括号)。如果不起作用,请用(Rowarray *)
替换它们。
您的语法是错误的,而且C/C++无论如何都不允许您转换为数组类型。
您的Rowarray
可能是int**
的typedef,所以您可以说:
rptr=(int**)malloc(nrows * COLS * sizeof(int)) ;
一般来说,除非你因为家庭作业或其他事情而被要求,否则你这样做是一种过于艰难的方式。不使用malloc
和原始指针,您可以轻松地使用std::vector<std::vector<int> >
创建动态2d数组
相关文章:
- 将字符串存储在c++中的稳定内存中
- 访问者访问变体并返回不同类型时出错
- C++ 指针的内存地址和指向数组的内存地址如何相同?
- 如何在多写入器情况下对文件支持的共享内存中的大页面出错
- 在C 中分配内存时出错
- 读取字符串 的字符时出错.分配内存
- c++ 数组和内存出错
- 获取应用程序的内存使用情况时出错
- 使用calloc分配内存时出错(释放堆块XXX后在YYY修改)
- 为双精度值分配内存时出错
- 在链表的开头插入时读取内存时出错
- 为二维数组动态分配内存时出错
- 释放内存时出错
- 将矢量bool复制到CUDA内存时出错
- Std::out_of_range在内存位置0x0043f7c4.使用矢量和输入文件时出错
- 试图构建最小内存时出错
- 如果使用memcpy,释放内存时出错
- 使用内存出错
- 尝试获取C++上的当前进程内存大小时出错,MinGW
- 如何避免访问已删除的内存块时出错