分类:ProblemList

9 篇文章

C++之尝试把类成员作为回调函数
问题提出: 在使用openGL的时候我想通过在类里面使用并且定义回调函数,经过对这个问题了解并且寻找解决办法,我才发现其实这绝非易事。 尝试解决: 一开始发现普通的成员函数由于隐藏着一个参数this,因此他无法作为回调函数。于是我将函数改成静态成员函数。但是这时候却发现静态成员函数只能访问静态成员变量,这就失去了我想把回调函数写在类里面的初衷,我希…
C++之类成员相互引用问题
问题: 在一个类中调用PacMan::keyStates数组,该数组是PacMan类的静态成员 在A类中是可以使用B类的静态成员变量的,那这个错误来自哪里? 解决: 原来在PacMan.h中#include"Game.h",在Game.h中#include"PacMan.h",将PacMan.h中的include去掉即可。 一探究竟:类成员之间的相…
Dijkstra’s 最短路径算法究竟能不能计算负权重
Cousera普林斯顿算法课提出,Dijkstra是不可以计算含负权值的路线的,但是经过自己跑了一遍发现某些路径上是可以,这里参考了知乎,stackflow上的回答。 这里的问题主要在于如何实现Dijkstra,从algs4官方上的实现上这个版本的Dijkstra是可以计算负权值的,其原因在于如知乎所讲的该实现是优先队列优化+允许重入队,因此在出现…
C之字符串问题
1.sprintf,strcpy,strncpy 做作业的时候发现对这三个函数的理解有点混乱,整理一下三个复制字符串函数的区别 1. sprintf(s1,"%s",s2)------------将s2字符串输入到s1,包括'\0',同理如果没有遇到''\0",会一直复制到下一个字符串,这一点类似于strcpy 2. strcpy(s1,s2)--…
CSAPP: 文件I/O,各大输出流的不同
(一) Unix I\O , RIO ,标准I\O 刚接触文件I/O的时候,原来一直习惯,也只会使用printf的我被几个输入函数绕得团团转,于是利用这篇文章整理一下这三大代表,从不同在哪,为什么需要这种不同分析,(每一个轮子的诞生总是因为他被需要 Unix I\O write() 向描述符为fd的文件中写入最多n个字节到buf中,read则为读取…
CSAPP:撸一个Shell(三)(完)
(三)Ctrl+Z后卡死?? 进一步的测试我发现ctrl+z发送暂停信号给子进程后Shell进入了暂停状态, 子进程进入暂停状态,父进程也暂停了,我发现暂停是发生在取消信号阻塞的时候,我猜想是由于子进程暂停的时候发送了父进程但是没有处理而发生了阻塞,于是我试着在SIGCHLD处理函数中的waitpid将option添加WUNTRACED去接受子进程…
CSAPP:撸一个Shell(二)
(二)接收不到子进程发送的SIGCHLD?? 解决了前后进程的问题,很快又遇到了另外一个让我绞尽脑汁的问题,Shell创建的第二个子进程变成了zombie进程。不应该啊,因为我已经写了SIGCHLD的处理函数,如果子进程terminate,应该会发送一个SIGCHLD信号给Shell然后Shell进入处理函数进行回收。经过了printf的调试后我发…