回答了问题2020-01-17
这里的set<int>是临时变量,脱离了作用域后会释放.即在TextQuery::query返回后会析构掉,这时的QueryResult.c指向的是一个无效对象,发生什么事情都是可能的.
回答了问题2019-08-01
刚刚测试了一下.通过监听目录变化检测到删除. {代码...}
赞了回答2019-07-30
对于我个人来说,在算法竞赛中可能会碰到以下情况: scanf("%d", n); 查了半天才查出来,发现是手快了没敲中 &(这个是手残,但是用 cin >> n 就可以轻松地避免了吧?)
回答了问题2019-06-20
比如在UI的构造函数里面使用std::async、std::packaged_task预加载 一些数据量大 的信息,必须等信息加载完成 想想看,如果这些数据能被并行加载呢? 比如下面这样 {代码...}
回答了问题2019-05-10
比如说有中间件,你发出的消息被中间件接收了,tcp层发送成功,但是中间件给后端时失败,那么这条消息是需要重传,tcp层是无法感知的,所以需要应用层来处理.
赞了回答2019-03-26
join的循环次数不对` count在线程中被改变了,所以部分线程没等到就退出了
赞了回答2019-03-14
上面的程序会有源源不断的资源push到队列中,当然区别就不大了。如果是生产者的资源比较少,消费者需要进行长时间等待的时候,如果用互斥锁,消费者就需要不断轮询,占用资源;而用条件变量就可以实现等待。另外,第一个程序里面if (!msgQue.empty())不一定是原子操...
赞了回答2019-02-25
既然在main第一行都没run起来,我想是不是在第一行之前发生了错误?比如以下代码,你在main第一行cout打断点,没到断点就会crash,因为在mian函数之前,先执行了全局变量的构造函数。我简单想了一下,这也算个原因吧。应该还有一些别的原因会造成,看看别的大神怎么说。
回答了问题2019-02-25
std::bind会对入参进行拷贝或者移动The arguments to bind are copied or moved, and are never passed by reference unless wrapped in std::ref or std::cref.
回答了问题2019-02-25
小程序delete不delete不影响这种说法这个说法完全不对.不要因为程序小养成不良习惯.有new就要有一定要有delete. 你的链表是循环new出来的,要删除全部,就从头开始循环delete,直到下个节点是NULL代码就不给了.
回答了问题2019-02-22
sort的Compare不符合规范.参考std::sort,Compare就是说如果有comp(a,b) == true,那么comp(b, a) == false必须成立.你的end用<=比较,会导致comp(a,b) == true, comp(b, a) == true
赞了回答2019-02-19
function()是class B的成员函数, 不是class A的成员函数. {代码...} class B 可以通过function()访问class A.比如: {代码...} 参考:CSDN: 关于C++友元与前置声明
回答了问题2019-02-18
packaged_task/future/thread不需要使用new,future装到里std::vector就行,thread可以直接detach,packaged_task直接move到thread里 {代码...}
回答了问题2019-01-30
GCC的实现是拷贝了两次.看了6.3.0源码,thread里拷贝了两次.第一次构造bind,这里msvc和gcc都是需要一次拷贝,区别是msvc直接make_unique tuple去invoke,gcc是先构造一个bind,再把bind移动到unique_ptr里.
回答了问题2019-01-28
德是不低于才.是>=
回答了问题2018-11-22
我建议找库作者或者自己测试一下这个函数,送指针的指针,一般是用来初始化对象的,错误的用法可能会导致内存泄露. 比如说 {代码...}
赞了回答2018-11-22
这样用reinterpret_cast会导致UB。即便放在一个特定的环境下,强行用也会使得兼容性,移植性等等都得不到保障。在转换之前可以进行一些检查,如:
回答了问题2018-11-14
实际上不是rc变了,是r变了. r 这个入参实际上是root,关键是你是怎么送的参数到deletemin,你可以再赋值前输出&r和&root看看 下面的代码可以看出两种方式的区别. {代码...}
回答了问题2018-11-12
cstdio是c++的头,一般应该是在 /usr/include/c++/gcc版本/ 或者 /usr/local/include/c++/gcc版本/ 里
赞了回答2018-11-12
Allocator::destroy的时候,当前循环正在构造的对象不能析构(因为没有构造完),否则UB。感觉你这个写法会析构当前一轮循环正在构造的对象。