【发布时间】:2020-11-27 23:34:41
【问题描述】:
所以,我正在做一些哈克等级的练习,我找到了this exercise。
简而言之,这是一个间隔调度问题,但我怀疑的是指针和数据结构。
下面这段代码是我怀疑的一个简单版本。
我的疑问在于 initialize 函数。当程序完成它时,ptr 指针变量只有一个 arrayOfA 实例,只有第一个条目,我希望有 N 的大小。
那么我对这个数据结构和它的指针做错了什么?
我不想使用另一个库作为向量和东西,因为我认为没有必要。
#include <iostream>
struct A
{
unsigned int startTime;
unsigned int duration;
unsigned int endTime;
};
struct B
{
int size;
A* arrayOfA = new A[size];
};
B* initialize(int start_time[], int duration[], int n)
{
B* pointer = new B();
pointer->size = n;
for (int i = 0; i < n; i++)
{
pointer->arrayOfA[i].startTime = start_time[i];
pointer->arrayOfA[i].duration = duration[i];
pointer->arrayOfA[i].endTime = start_time[i] + duration[i];
}
return pointer;
}
int main()
{
//initialization
int n = 6;
int arrayOfStart[] = { 1, 3, 0, 5, 5, 8 };
int arrayOfDuration[] = { 1, 1, 6, 2, 4, 1 };
B* ptr;
ptr = initialize(arrayOfStart, arrayOfDuration, n);
for (int i = 0; i < n; i++)
{
std::cout << ptr->arrayOfA[i].startTime << std::endl;
}
}
【问题讨论】:
-
A* arrayOfA = new A[size];调用 未定义的行为,因为size在执行时尚未初始化 -
我不想使用另一个库作为向量和东西,因为我认为不需要它。 -- 我猜内存泄漏是可以的?您的程序在几个地方泄漏了内存。
-
如果这是一个学术练习来了解像
std::vector这样的东西是如何实现的,那将是合理的。但除此之外一般最好使用标准库,效果很好。
标签: c++ pointers memory data-structures struct