初始化字符矩阵时出现 EAccess 冲突
EAccess Violation when initializing char matrix
我有一个基本的 c++ 练习。我需要将一些列出的单词传递给字符矩阵,但我在初始化矩阵时遇到问题......
这是我的代码:
class Cahorcado
{
public:
//functions
Cahorcado(void);
private:
char** palabra;
};
Cahorcado::Cahorcado(void)
{
for(int i=0;i<26;i++)
{
for(int i2=0;i2<255;i2++)
{
palabra[i2][i]=' '; //i'm getting the error over here
}
}
}
我收到"EAccess 冲突"错误...我不能使用字符串,必须是char的或AnsiString的(c ++生成器)。我不知道我什至是否宣布字符矩阵很好。我想到的是这样的:
{'H','e','l','l','o', ,
'W','o','r','l','d', ,
, , , , , ,
, , , , , , }
(只是为了出主意)
http://pastebin.com/gBQvED5h <-完整代码(西班牙语警告)
在类构造函数的开头,你应该有以下内容来分配数组存储,
palabra = new char*[rows];
for (std::size_t i = 0; i < rows; ++i)
palabra[i] = new char[cols];
其中rows
和cols
分别表示 2D 数组中的行数和列数。
然后在您的析构函数中,您将需要,
for (std::size_t i = 0; i < rows; ++i)
delete[] palabra[i];
delete[] palabra;
为了破坏动态分配的内存并避免内存泄漏。
以上是相当过时的C++,更好的方法是通过内部处理内存分配和取消分配的 STL 容器。例如,您可以使用 std::vector<std::vector<char>>
对象来存储字符矩阵,然后您的类将如下所示:
class Cahorcado {
public:
// create char matrix with each element initialised with ' '
Cahorcado(std::size_t rows, std::size_t cols)
: palabra(rows, std::vector<char>(cols,' ')) {}
private:
std::vector<std::vector<char>> palabra;
};
相关文章:
- 写入位置0x0000000C时发生访问冲突
- GL_SHADERSTORAGE_BUFFER位置是否与其他着色器位置冲突
- 使用cmake从源代码构建MySQL连接器/C++失败(与以前的声明冲突)
- 引发异常:读取访问冲突**dynamicArray**为0x1118235.发生
- C++LinkedList问题.数据类型之间存在冲突?没有匹配的构造函数
- 链表中写入访问冲突的未知原因
- C++中的openCV Mat访问冲突
- 如何使 std::sort 在 std::swap 和我的命名空间的模板化交换之间没有名称冲突?
- C++尝试深度复制唯一指针时出现内存访问冲突
- 错误:使用通用引用的声明冲突
- 如何解决GTest和LibTorch联动冲突
- 两个运营商的一些奇怪的冲突<<
- 如何在多个线程中创建 QSql数据库连接时防止名称冲突
- C++ 中动态二维数组的访问冲突
- 从嵌套循环中的 std::list 中删除将返回访问冲突
- C++17 十六进制浮点文字单精度后缀冲突?
- 结构字段名称与 GDB 中的 STL 数组冲突
- 写入访问冲突异常
- C++ |匿名命名空间与命名空间 std 冲突
- 初始化字符矩阵时出现 EAccess 冲突