2023年 2月3月 工作经历

2月

#pragma make_public(type)

托管C++导出传统C++类,另一个托管C++项目使用不了。传统C++类make_public后,就可以使用了。对模板类无效,比如:std::string。

C#线程绑定CPU

我的方案:

假定我们想把 CPU0 设置成专有CPU。

定时将其它进程设置成占有除专有CPU以外的其它CPU。

将本进程设置成除 有CPU以外的其它CPU。

将本线程设置成所有CPU,优先使用CPU0。

2月14

今天和领导同事沟通,讨论到Windows的任务管理器的资源占用,是不是实时的。分配内存后,马上释放,任务管理器能否发现。测试过程:分配100M内存并memset,Sleep(100),释放内存,Sleep(100)。任务管理器交替显示10M和110M内存。释放得越早,10M出现的几率越多。perfmon工具也监控不到。

QQ微信存留

发现 QQ 存留,比微信高。 我优先加微信,加不了微信,才加QQ。QQ好友22,微信好友20。 QQ被对方删除好友,就变成陌生人。 所以微信好友很可能不到20,QQ好友是实打实的22。HR估计年轻人用QQ更多。后来查了下,微信好友有2个没通过,QQ好友有3个没通过。 微信通过率略高。

3月

函数结束时崩溃

同事告诉我用windgb调试,发现在函数结束时崩溃。怀疑崩溃在局部变量的析构函数。

建议用指针临时代替局部变量 ,看是不是 delete崩溃。比如:

cv::Mat mInputImg;

改成:

cv::Mat *pmInputImg;

//...

delete pmInputImg;

也可以用智能指针。 ptr = nullptr; 会调用析构函数。

class CTest

{

public:

~CTest()

{

std::cout << "析构函数";

}

};

int _tmain(int argc, _TCHAR* argv[])

{

std::shared_ptr<CTest> ptr = std::make_shared < CTest>();

ptr = nullptr;

std::cout << "安全指针置为空";

}

最终原因:我同事更新的时候忘记更新某些dll。

find可以通过,count不能

else if( m_setMid.end() != m_setMid.find(iDel))

以下代码就通过

else if (m_setLeft.count(iDel))