2个不同的数组,一个分配
2 different arrays, one allocation
我正在解决一个调度问题,并创建一个实例生成器。我有一个问题——数组t1、t2、t3指向同一个内存单元,因此所有数组在分配后都具有相同的数据。这是我的代码
(…)
int **t1;
t1= new int*[1];
t1[1]=new int[2];
int **t2;
t2= new int*[1];
t2[1]=new int[2];
int **t3;
t3= new int*[1];
t3[1]=new int[2];
for (int s=0; s<20; s++ )
{
for (int w=0; w<3; w++)
{
time[w]=(rand() % 200) +1;
machine[w]= (rand() % 3) +1;
if (w>0)
while (machine[w]==machine[w-1] || machine[w]==machine[0])
{
machine[w]= (rand() % 3) +1;
}
}
t1[0][0]=machine[0];
t1[0][1]=time[0];
t2[0][0]=machine[1];
t2[0][1]=time[1];
t3[0][0]=machine[2];
t3[0][1]=time[2];
(…)
非常感谢!
t1= new int*[1];
分配一个指针数组。
t1[1]=new int[2];
写入这个单元素数组的第二个元素。这会导致未定义的行为。在您的情况下,它听起来像&t1==&t2[1]
,导致您每次创建新数组时都会覆盖以前分配的地址。
您应该写入数组的第一个元素,而不是
t1[0]=new int[2];
// ^
如果C样式数组的使用不是赋值的要求,那么使用std::vector<int>
可以更容易地实现int
的数组。
相关文章:
- 当一个新对象被分配到它的地址时,对象是否必须被销毁
- C++ 如何在将新对象分配给另一个对象时创建新对象
- 我有一个对象,它将在整个程序的持续时间内实例化,但一个类成员不会,我应该动态分配它吗?
- 我如何通过引用将 c++ 字符串分配给另一个字符串
- 如何在 c++ 中将小数点后两位数的浮点数分配给另一个浮点数
- 为什么我可以在不重载 "=" 运算符的情况下将一个对象分配给另一个对象?
- 将指针分配给另一个指针时会发生什么情况?
- 当分配一个字符串值并稍后通过分配另一个值进行更改时C++如何管理内存?
- C++将一个指针分配给另一个指针时执行的类型检查
- 给定一个指向堆分配内存的指针,智能指针实现如何为其找到合适的释放函数?
- 关于字符数组,我正在尝试将数组中的每个字符分配给另一个值
- 使用动态分配将 char* 复制到另一个字符**
- C++为 void 指针分配一个字符串
- 是否可以使用分配器对象来释放另一个分配器分配的内存?
- 如何在不知道对应关系的情况下在字符串中搜索字符并将其分配给另一个字符?
- 动态分配列表 - 创建一个函数,用于删除所有包含偶数值的元素
- 我重载了 << 和 = 运算符。为什么当我将一个对象分配给另一个对象并尝试打印它时,我会被打印出来?
- 为什么在分配给成员变量之前获取unique_ptr的返回是一个问题?
- 在另一个分配的矩阵中为特定范围创建 cv::Mat 标头
- 2个不同的数组,一个分配