编程问题
hodd1988
linux先飞
展开
-
main函数入口处的段错误
将一些源文件用个g++编译通过,执行时发现有段错误,gdb调试看了一下是在main函数的入口处错了。排查了好一会,发现了问题所在,因为栈中定义了一个较大的数组。解决方法就是不要把大数组放栈中,大数组new出来就没事了.原创 2013-11-28 17:28:43 · 1809 阅读 · 0 评论 -
重载set的operator<()函数
重载set的operatorstruct A{ int x; int y; int z;/* bool operator < (const A & other)const { return (x == other.x) ? y > other.y : x > other.x; }*/}; // end of struct A原创 2016-06-29 13:20:53 · 3849 阅读 · 0 评论 -
memcached-1.4.22 源码问题
看了do_slabs_newslab源码,好像有瑕疵,欢迎跟进,先贴源码static int do_slabs_newslab(const unsigned int id) { slabclass_t *p = &slabclass[id]; int len = settings.slab_reassign ? settings.item_size_max :原创 2015-04-05 23:57:03 · 594 阅读 · 0 评论 -
atexit注册终止处理程序
#include #include using namespace std;void fun1(){ cout << "fun1" << endl;}void fun2(){ cout << "fun2" << endl;}int main(int argc, char* argv[]){ atexit(fun1); atexit(fun1); atexit(fun2原创 2015-01-03 12:51:09 · 651 阅读 · 0 评论 -
epoll 水平触发和边缘触发
假设内核缓冲区中有2k数据,你只读了1k到应用程序缓冲区。当使用水平触发选项注册描述符时epoll会通知应用程序还有数据没有读取。如果使用边缘触发选项时就不会再次通知,所以使用边缘触发应该在循环内读完缓冲区内的所有数据。原创 2015-01-01 13:46:53 · 698 阅读 · 0 评论 -
使用存储映射I/O函数mmap进行文件拷贝
使用存储映射I/O函数mmap进行文件拷贝比调用read和write函数更快,因为mmap映射两个文件到内存之后可以使用memcpy直接在两个内核缓冲区之间拷贝数据。使用read将数据从内核缓冲区拷贝到应用程序缓冲区,再使用write将应用程序缓冲区的数据拷贝到内核缓冲区中就慢了。原创 2014-12-31 23:24:04 · 632 阅读 · 0 评论 -
动态链接时如何访问在其他模块中的全局变量
全局变量可定义在共享模块,也可以定义在程序主模块。无论全局变量定义在共享模块还是主模块都是通过GOT间接访问。主模块是第一个载到内存中的,运行时不会再进行地址的重定位,所以链接时就要确定所有引用全局变量的地址。主模块为所有引用的全局变量产生一个副本,包括定义在其他共享模块中的全局变量。当共享模块发现主模块中有需要引用的全局变量副本时就会使用该副本的地址进行重定位,如果主模块中没有该全局变量的副本就原创 2014-12-27 11:46:02 · 865 阅读 · 0 评论 -
两个进程如何共享内存
进程在访问内存时会使用页表将虚拟内存映射为物理内存,访问共享内存实际就是将两个进程的虚拟内存块映射到同一个物理内存块以达到共享的目的。原创 2014-12-25 19:20:32 · 1729 阅读 · 0 评论 -
select into 到临时表中
select * into temp my_temp_table from src_table,临时表在会话结束后会自动删除.原创 2014-12-25 11:22:24 · 823 阅读 · 0 评论 -
静态链接库相互依赖
想同时链接两个自定义的静态链接库,发现无论以什么顺序链接都会有一些函数未定义。网上搜了一番找到解决方案:假设有liba.a和libb.a两个静态链接库,则添加链接选项时,多链接其中一个库一遍即可解决相互依赖的问题。如-la -lb -la。为什么相互依赖的静态链接库会导致其中一些库中的函数未定义,因为链接器并没有把库中的所有符号都链接到当前程序中,而是当前程序中有未定义的符号就到链接库原创 2014-02-24 20:58:10 · 4299 阅读 · 0 评论 -
ubuntu安装cuda
到nvidia官网根据显卡型号快速找到显卡驱动(run文件).sudo chmod a+x **.run 更改文件权限为可执行运行**.run文件,全部点yes,提示安装完成后 reboot重启nvidia官网继续下载cuda安装包(run文件),一定要对应上正确的操作系统!一样该权限,执行该文件提示关掉x-serverctrl + alt + f1 进入终端,pkill原创 2013-12-17 22:13:12 · 667 阅读 · 0 评论