![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
c/c++
没出没
这个作者很懒,什么都没留下…
展开
-
c++用参数返回堆上的空间
《高质量c++和c编程》7.4 指针参数是如何传递内存的一节中写道复制代码void GetMemory(char *p, int num) { p = (char *)malloc(sizeof(char) * num); } void Test(void) { char *str = NULL; GetMemory(str, 100); // str 仍然为 NULL原创 2015-03-14 20:13:36 · 563 阅读 · 0 评论 -
可以用变量指定大小的Bits对象实现
c++的容器中有位对象bitset,但是个人认为最大的问题是定义是必须指定常数大小,比如bitset<3> bit;无法实现int n = 3;bitset<n> bit;所以我自己查了一些资料,实现了能用变量定义的Bitsclass Bits{public:Bits(int numOfBits);virtual ~Bits();bool Set(int arg);bool Clr(i原创 2015-03-14 20:18:32 · 711 阅读 · 0 评论 -
linux dll hell--链接库real name, soname, link name
DLL hell 是指 Windows 系统上动态库的新版本覆盖旧版本,且新版本不能兼容旧版本的问题。例如:装新软件,但原有的软件运行不起来了。 Linux 系统下也同样面临着和 Windows 一样的动态库多版本的问题,其严重影响软件的升级和维护。那么此问题该如何解决的呢?Linux 系统为解决这个问题,引入了一套机制,如果遵守这个机制来做,就可以避免这个问题。这只事一个约定,不是强制的。原创 2015-03-14 19:48:59 · 1333 阅读 · 0 评论 -
gcc编译器优化给我们带来的麻烦???
今天看到一个很有趣的程序,如下:int main(){ const int a = 1; int *b = (int*)&a; *b = 21; printf("%d, %d", a, *b); return 0;}当我第一眼看到这个程序的时候,我想当然的认为输出结果是21, 21,但是我错了: 一时很难理解,于是我又输出了它们的地址:int main()原创 2015-03-14 20:04:57 · 831 阅读 · 0 评论 -
linux accept
#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define MAXLINE 4096void handler(int sig) {原创 2015-03-04 14:22:39 · 1767 阅读 · 0 评论 -
linux signal中断系统函数/库函数
这篇文章是上一篇文章《c++实现服务器在线重启》中的一个实验,演示了linux下当系统函数/库函数遇到信号中断,当信号处理函数处理结束后系统函数/库函数所采取的动作。系统函数/库函数或者被重启,或者被彻底被中断,该动作取决于signal mask是否设置了SA_RESTART标志。如若有什么问题请参考这里#include <sys/types.h>#include <sys/socket.h>#原创 2015-04-07 11:54:47 · 659 阅读 · 0 评论 -
c++实现服务器在线重启
c++实现优雅的服务器重启标签(空格分隔): c++前些天,在网上看到一篇博文,讲述了如何用Go语言实现优雅的服务器重启,主要有以下几个目标: 不关闭现有的链接。 socket能正常接受客户端的请求并缓存,待服务端进程重启后处理。 新的进程重启并替代旧的进程。 归根结底,作者的实现利用了Unix中一切皆文件的概念,将其发挥的淋漓尽致的则是Go语言。这里,首先介绍以下博文中涉及原创 2015-03-30 09:42:57 · 1897 阅读 · 1 评论