小编Van*_*den的帖子

不调用析构函数时破坏类成员

在下面的代码中,ptr删除的时候会Base调用析构函数,而不是析构函数Derived(因为析构函数Base不是虚函数).

class Base
{
  int b;
};

class Derived : public Base
{
  int d;
};

int main(void)
{
    Base * ptr = new Derived();
    delete ptr;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

Valgrind报告该程序不包含内存泄漏,我认为在这种特殊情况下删除所有新建数据的意义上都是如此.我的问题是 - 假设Derived未调用(默认)析构函数,何时以及如何d释放或回收内存?

c++

6
推荐指数
1
解决办法
229
查看次数

定点乘法

我需要根据非常数因子将值从一个单位转换为另一个单位.输入值范围为0到1073676289,范围值范围为0到1155625.转换可以这样描述:

output = input * (range / 1073676289)
Run Code Online (Sandbox Code Playgroud)

我自己的初始定点实现感觉有点笨拙:

// Input values (examples)
unsigned int input = 536838144;  // min 0, max 1073676289
unsigned int range = 1155625;    // min 0, max 1155625

// Conversion
unsigned int tmp = (input >> 16) * ((range) >> 3u);
unsigned int output = (tmp / ((1073676289) >> 16u)) << 3u;
Run Code Online (Sandbox Code Playgroud)

我的代码可以改进为更简单或更准确吗?

c fixed-point

2
推荐指数
2
解决办法
2614
查看次数

标签 统计

c ×1

c++ ×1

fixed-point ×1