查找代码中的逻辑缺陷或低效率
Find logical flaws or inefficiencies in code
我学习 c++,我有一个这样的练习:
查找此代码中的逻辑缺陷或低效率。
我发现两个 for 语句效率低下。但我觉得存在更多的问题点。帮我找出他们在哪里。
int Sum(int start, int last) {
int* a = new int[last - start];
int sum = 0;
for (int i = start; i <= last; ++i) {
a[i] = i;
}
for (int i = start; i <= last; ++i) {
sum += a[i];
}
return sum;
}
此代码有多个编码问题:
- 它
- 分配一个新数组,但从不释放它(内存泄漏(
- 它没有为数组分配足够的内存(
last - start
应该last - start + 1
( - 它将数组从
start
到last
(包括 (进行索引,而它应该将其从 0 索引到last - start
(包括 - 当
last
小于start
时,new []
的调用具有未定义的行为(无前提条件检查(。
但是,最大的问题是逻辑问题:代码计算 start
和 last
之间的连续数字之和,包括,这可以通过算术级数总和的公式以封闭形式完成,该公式根本不使用数组:
int Sum(int start, int last) {
return (last - start + 1)*(last + start) / 2;
}
相关文章:
- 被解释为低级别const的const对象的地址
- 为什么当我解模块化时,这个C++代代码"效率较低"?
- 当基类是依赖类型时,这是一个缺陷吗
- 有没有一种代码密度较低的方法来使用非默认构造函数初始化数组?
- 使用专用显卡进行 OpenGL 渲染时帧速率较低
- 代码的效率. 转到和函数调用
- 对于循环C++可能效率低下
- 在打开多个其他窗口时使用全屏窗口时帧速率非常低
- C++ - 与 Numpy 中的矢量版本相比,Argsort 效率低的矢量版本实现
- C++,在对象内分配多个数据时,堆栈分配是否更有效? 在下面的程序中,类A_Heap的效率会更低吗?
- 查找代码中的逻辑缺陷或低效率
- 而循环效率低且不起作用
- 为什么移动返回到函数末尾的效率较低
- std::与VS2013相比,GCC 4.7.2中的MAP实现效率非常低
- OpenMP for循环并行化:我的代码效率很低
- 在循环条件下重复求值表达式效率低吗?
- 为什么阶乘递归函数比普通阶乘函数效率低
- std::set构造函数有时效率很低
- 复制-交换习语的低效率
- c++代码可以工作,但看起来效率很低