C++对象数组的访问冲突
C++ access violation to array of objects
我是C++的新手,我尝试创建一个对象数组。我使用这样的代码
const int SORT_SIZE = 20;
int _tmain(int argc, _TCHAR* argv[])
{
CSimple * data;
data = new CSimple[SORT_SIZE];
for(int i = 0; i < SORT_SIZE; i++)
{
/*Access violation here*/ *(data + i * (sizeof(CSimple))) = *(new CSimple(rand() % 10000));
}
在我的周期中 i = 5 我得到了访问违规。 sizeof(CSimple) 是 8(那里只有一个 int 字段)如果它很重要
将 for 循环中的行替换为 data[i] = CSimple(rand() % 10000)
。更多的阅读,不是吗?
代码失败的原因是data + i
不会将数据增加 i 字节,而是增加 i CSimple
的。 比如说,如果 CSimple 的长度为 4 个字节,那么data + i * sizeof(CSimple)
将数据递增 16 个字节而不是 4 个字节。
作为一个新手,你为什么不让你的生活更轻松,并使用自动为你完成艰苦工作的类型呢?
#include <vector>
const int SORT_SIZE = 20;
int _tmain(int argc, _TCHAR* argv[])
{
std::vector<CSimple> data;
for(int i = 0; i < SORT_SIZE; i++)
{
data.push_back( CSimple(rand() % 10000) );
}
相关文章:
- 按字符值访问int数组
- C++ - 循环访问指针数组会导致错误
- 通过unique_ptr访问std::数组
- 为什么我无法访问指向数组中成员函数的指针?
- 在函数 strcpy() 中访问字符数组时出现分段错误
- 在 C++ 中访问 JSON 数组值
- 在C++中访问结构数组中的数据
- C++:在多个线程中访问同一数组/向量的不同单元格是否会产生数据竞赛?
- 是否可以使用宏来访问动态数组或向量中的元素或为其赋值
- 从类访问char数组
- 更快地访问 C++ 数组中的随机元素
- 如何修复访问动态数组中结构中的字符串变量时"segmentation fault (core dumped)"错误
- 在C++中使用 RapidJSON 访问 JSON 数组的字段
- 创建 2D 数组类:如何访问 2D 数组类(如 array[x][y))中的元素
- 通过矢量下标访问 Fortran 数组,相当于 cpp
- 在能够从 Web 浏览器访问大型数组数据的同时存储它的最可行方法是什么?
- 有没有办法使用初始化到第一行的指针访问 2d 数组的第二行?
- 通过C++中的指针访问字符数组
- C++ 如何使用类方法正确访问动态数组元素
- 访问 2D 数组时的读取冲突