小编Cpt*_*ing的帖子

valgrind和openmp,仍然可以到达并且可能丢失,那是不是很糟糕?

c ++新手在这里.

在过去的几天里,我一直在提高我的记忆管理技能,根据valgrind,我的程序不再泄漏内存.事实上,我根本没有得到valgrind的警告.

但是,当我在我的代码中添加openmp循环时,我开始在valgrind(memcheck)中得到以下错误:(但没有明确丢失的块)

==6417== 304 bytes in 1 blocks are possibly lost in loss record 3 of 4
==6417==    at 0x4C279FC: calloc (vg_replace_malloc.c:467)
==6417==    by 0x4011868: _dl_allocate_tls (dl-tls.c:300)
==6417==    by 0x6649871: pthread_create@@GLIBC_2.2.5 (allocatestack.c:570)
==6417==    by 0x62263DF: ??? (in /usr/lib/x86_64-linux-gnu/libgomp.so.1.0.0)
==6417==    by 0x42A2BB: Blade::updatePanels() (blade.cpp:187)
==6417==    by 0x418677: VLMsolver::initialiseBlade() (vlmsolver.cpp:590)
==6417==    by 0x415A1B: VLMsolver::start(std::string) (vlmsolver.cpp:80)
==6417==    by 0x40B28C: main (charybdis.cpp:176)
Run Code Online (Sandbox Code Playgroud)

和:

==6417== 1,568 bytes in 1 blocks are still reachable in loss record 4 of 4
==6417==    at 0x4C28FAC: malloc …
Run Code Online (Sandbox Code Playgroud)

c++ valgrind openmp

12
推荐指数
1
解决办法
5099
查看次数

Matlab ylabel cutoff使用plotyy函数

如附带的屏幕截图所示,matlab的EPS输出是在右侧Y轴上切割标签.

我正在使用plotyy函数,并使用:print(f1,' - depsc2','figure1.eps')打印到eps;

我已经尝试更改paperposition属性,以及papersize属性,这些似乎在每次调整时都与另一个进行缩放,因此我永远无法在右侧增加纸张大小​​.

我已将paperpositionmode设置为手动.

有没有人有任何想法?

我已经创建了一些自给自足的示例代码并复制了问题.增加刻度和字体大小时会产生问题.然而,这对我的情况至关重要.

close all;

% example data:
x = 0:0.01:4;
y1 = 5*sin(2*pi*x+0.1) + 20;
y2 = 0.09*sin(2*pi*x);

tickfontsize = 18;
labelfontsize = 20;

% begin figure:
f1 = figure(1);
[ax, h1, h2 ] =  plotyy(x,y1,x,y2)

% axis labels and font size:
set(get(ax(2),'Ylabel'),'String','Test1') ;
set(get(ax(1),'Ylabel'),'String','test2') ;
set(get(ax(1),'Ylabel'),'FontSize',labelfontsize) ;
set(get(ax(2),'Ylabel'),'FontSize',labelfontsize) ;

% left hand side ticks:
set(ax(1),'YLim',[6 10]);
set(ax(1),'YTick',[6:1:10]);
set(ax(1),'FontSize',tickfontsize);

% right hand side ticks:
set(ax(2),'YLim',[-0.13 0.14]);
set(ax(2),'YTick',[-0.1:0.05:0.1]);
set(ax(2),'FontSize',tickfontsize);

%print figure to eps:
print(f1,'-depsc2', './simpleoutput.eps');
Run Code Online (Sandbox Code Playgroud)

EPS输出的屏幕截图

matlab matlab-figure

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

C ++朋友类数据访问

这里的C ++新手。

我是写cfd(ish)代码的科学人。我为所有求解函数创建了一个类,并且该类处理了网格上的操作。网格类希望能够看到存储在求解类中的一些变量,因为将它们全部传递给网格类似乎有点费劲。

因此,在我的研究中,我遇到了朋友班,但似乎无法正常工作。请参阅下面的完全缩减示例。类A是求解器,它创建了网格类B。即使我已经编写了朋友类B,我仍然遇到以下编译错误(g ++):

在成员函数'void B :: testB()'中:

错误:未在此范围内声明“ a1”

这是代码:

#include <iostream>
using namespace std;
class B {
private:
    int b1;

public:
    void testB(){
        cout<<a1<<endl;
    };  


};

class A {
friend class B;

private:
    int a1;

public:
    void testA(){
        a1=2;
        B b;
        b.testB();
        };
};


int main(){
    A a;
    a.testA();
}
Run Code Online (Sandbox Code Playgroud)

c++

4
推荐指数
1
解决办法
7844
查看次数

onmeasure被调用,我不知道为什么 - android

我有一个活动,在线性布局中有几个视图,一个是textview,一个是我的游戏的主视图,这是我在代码中做的事情的自定义视图.

当我将以下代码添加到我的活动中时:

mTextView.setText("random text");
Run Code Online (Sandbox Code Playgroud)

onMeasure()在自定义视图中被调用,即textview上的setText似乎导致不同的视图重新测量.因为我的onmeasure()代码以不合需要的方式重置视图,所以我想避免这种情况发生.

在这种情况下导致调用onMeasure()的原因是什么?如何阻止它?

android view textview

3
推荐指数
1
解决办法
2259
查看次数

哑数据对象包含所有常见值c ++,这是正确的

所以我是c ++的新手,我正在为科学应用而写作.

需要从几个输入文本文件中读取数据.

目前我将这些输入变量存储在一个对象中.(我们称之为inputObj).

我现在必须在我的所有对象周围传递这个"inputObj"是对的.看起来它刚刚成为全局变量的复杂版本.所以我想我可能会忽略OOP的观点.

我创建了一个g ++可编译的程序小例子:

#include<iostream>

class InputObj{
// this is the class that gets all the data
public:
void getInputs() {
    a = 1;
    b = 2;
};
int a;
int b;
};

class ExtraSolver{
//some of the work may be done in here
public:
    void doSomething(InputObj* io) {
        eA = io->a;
        eB = io->b;
        int something2 = eA+eB;
        std::cout<<something2<<std::endl;
    };  
private:
    int eA;
    int eB;

};

class MainSolver{
// I have most things happening from here …
Run Code Online (Sandbox Code Playgroud)

c++

3
推荐指数
1
解决办法
230
查看次数

Shared_ptrs 的向量,从函数返回它并修改它

本质上,我希望我的两个类共享一些数据,我希望将这些数据作为shared_ptr对象的向量。

我已将代码缩减为以下简单的可编译示例。

我希望对象 A 查看对象 B 中初始化的数据。但是,当我尝试在 A 的方法内执行 Push_back() 时,它并没有更改 B 中的共享指针对象的向量的大小。(在与评论“这是兴趣点”一致。)

我需要使用什么方法来获得此功能,或者我走错了路。(这里是c++新手)

#include <memory>
#include <vector>
#include <iostream>
using std::cout;
using std::endl;
class DataClass {
    public:
        int i_;
};
class B {
    public:
        // constructor:
        B() : my_data_(std::vector<std::shared_ptr<DataClass> >()) {
            my_data_.push_back(std::shared_ptr<DataClass> (new DataClass));
            my_data_.push_back(std::shared_ptr<DataClass> (new DataClass));
            my_data_[0]->i_ = 1;
            my_data_[1]->i_ = 2;
            cout<<my_data_.size()<<endl;
        };

        // return the data
        std::vector< std::shared_ptr<DataClass> > get_my_data() {
            return my_data_;
        };

        // check the data:
        void CheckData() {
            cout<<my_data_.size()<<endl; // This is the …
Run Code Online (Sandbox Code Playgroud)

c++ shared-ptr stdvector

3
推荐指数
1
解决办法
2857
查看次数