小编Jak*_* M.的帖子

什么时候在BISON中调用%析构函数?

什么时候在BISON中调用%析构函数?我有以下野牛代码:

%union{
    char * sval; 
    Variable * vval; 
} 

%token VARIABLE 
%token Literal 
%type <vval> Expression VARIABLE 
%type <sval> Literal 

%destructor { delete $$; } <vval> 
%destructor { delete $$; } Literal 
Run Code Online (Sandbox Code Playgroud)

其中Variable是一个类.我认为在处理一行之后,所有的Variable对象都将被释放,但我看不到调用析构函数.这将导致直接内存泄漏......

编辑:要清楚; 我为新令牌分配了一个新的Variable对象,并将此令牌推送到BISON堆栈.我希望删除变量,当它被bison弹出并从堆栈中丢弃时.我认为%析构函数可以达到这个目的,但我不确定了..

c++ bison

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

svg退出屏幕,是渲染?

场景:我有SVG图像,我可以放大和缩小.根据变焦,我将在可见部分显示更多/更少的细节.

问题是:我应该注意显示当前不可见的部分(屏幕外)的细节,或者渲染引擎是否足够智能在渲染之前跳过(剪辑)这些部分?

performance svg

5
推荐指数
1
解决办法
319
查看次数

在python中获取svg文本大小

我在python中生成SVG图像(纯,没有外部库).在我正确放置它之前,我想知道文本元素的大小.有什么好主意如何制作它?我检查了pysvg库,但我没有看到像getTextSize()

python svg

5
推荐指数
1
解决办法
1385
查看次数

css内边框,布局破损

我把屏幕分成许多,div所以它们彼此粘在一起(比如像棋盘这样的东西,但是有可变尺寸的字段).我设置heigthwidth使用百分比(相对于父容器).

现在,当我添加border: 1px到div时,所有布局都会中断...我想边框会为每边添加1px,解决方案是添加一些内部边框.我能以某种方式添加这样的内部边框吗?

css border border-layout

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

如果我有翻译,为什么要使用Parrot(或其他VM)?

如果我已经有一个解释器,我为什么要使用像Parrot这样的VM来使用我使用的动态语言(Python,Perl,...)?我可以获得什么,在我的代码和我的机器之间使用不同的VM,以及使用单独的解释器的成本?

(我是VM问题的新手,所以答案很明显)

编辑

Parrot VM对最终用户有什么好处?

python perl interpreter parrot vm-implementation

5
推荐指数
1
解决办法
918
查看次数

在源更改后自动运行测试

我使用Cxxtest对我的C++代码进行单元测试.我希望每次更改并保存我的代码时,都会运行测试(简单地说,通过make tests).我知道对于Python来说,有诺西可以实现这一点.是否有一些通用程序允许Cxxtest或任何其他测试单元?

简单地说,我只需要运行一个文件更改命令.编写这样的脚本并不困难,但也许已经有了一些工具:)

c++ python unit-testing

5
推荐指数
1
解决办法
123
查看次数

吸气剂的成本是否为零?

我有一个简单的课程:

class A {
    public:
    int get() const;

    private:
    void do_something();
    int value;
}

int A::get() const {
    return value;
}
Run Code Online (Sandbox Code Playgroud)

getter函数简单明了.Getters将使用它们,所以在do_something我应该使用get()才能访问value.我的问题是:编译器是否会优化出getter,因此它将等同于直接访问数据?或者如果我直接访问它,我仍然会获得性能(这意味着更糟糕的设计)?

A::do_something()
{
    x = get();
    // or...
    x = value;
}
Run Code Online (Sandbox Code Playgroud)

c++ performance

5
推荐指数
1
解决办法
365
查看次数

OpenMP:并行运行两个函数,每个函数占线程池的一半

我有一个CPU消耗功能do_long,我需要在两个不同的数据集上运行.

do_long(data1);
do_long(data2);

do_long() {
#pragma omp for
    for(...) {
        // do proccessing
    }
}
Run Code Online (Sandbox Code Playgroud)

我有N个线程可用(取决于机器).如何告诉OpenMP我希望两个do_long 函数并行运行,N/2线程应该首先执行循环do_long而另一个N/2应该处理第二个do_long

c c++ openmp

5
推荐指数
1
解决办法
3264
查看次数

将"函数foo的隐式声明"视为错误

GCC 在声明之前implicit declaration of function foo 使用时会发出警告foo().是否有任何GCC标志会将此警告视为错误并停止编译?有时它可以节省一些调试工作......

c gcc

5
推荐指数
1
解决办法
785
查看次数

在.vimrc中以静默方式覆盖冲突的映射

我有一个映射,.vimrc它与插件中的另一个映射冲突.

nnoremap <leader>p some fancy command here
Run Code Online (Sandbox Code Playgroud)

当我运行VIM时,我收到一个警告:

E227: mapping already exists for ,p
Run Code Online (Sandbox Code Playgroud)

如何静默覆盖违规映射?

编辑:

  • 它既不适用 nmap

vim

5
推荐指数
1
解决办法
1444
查看次数