爱悠闲 > 分类 >

linux-C 第4页

c语言实现循环左移和循环右移
C语言实现循环移位,代码如下,注意,value要是unsigned 型的,例如unsigned int。   #define CROR(value, bits) (((value) >> (bits)) | ((value) << (32 - (bits)))) #define CROL(value, bits) (((value) << (bits)) | ((value) >> (32 - (
二进制长字符串转为大整数(16进制数)
下面我自己写的代码,把二进制的字符串转为一个大整数,因为本身这个二进制字符串表示的就是一个大整数。   #include <stdio.h> #include <string.h> #define BASE '0' int byte2hex(const char src[], unsigned char dst[], int *length) { int i,j,k; unsigned char
因为dwarf2_read_address: Corrupted DWARF expression而升级GDB,附升级教程
转自:http://blog.csdn.net/littlefang/archive/2010/10/28/5971024.aspx   原有的代码做了部分修改,再调试的时,p某个变量出现"dwarf2_read_address: Corrupted DWARF expression"错误,在网上搜了一下,是由于gdb的bug导致的,该bug已在GDB 6.7及以上版本修复。测试服务器上的版本刚好
volatile关键字和原子操作的区别
************************定义 ******************************* volatile总是与优化有关,编译器有一种技术叫做数据流分析,分析程序中的变量在哪里赋值、在哪里使用、在哪里失效,分析结果可以用于常量合并,常量传播等优化,进一步可以死代码消除。但有时这些优化不是程序所需要的,这时可以用volatile关键字禁止做这些优化 ,volatile的字
深入Linux的内存管理,关于PTMalloc3、Hoard和TCMalloc
Linux 中 malloc 的早期版本是由 Doug Lea 实现的,它有一个重要问题就是在并行处理时多个线程共享进程的内存空间,各线程可能并发请求内存,在这种情况下应该如何保证分配和回收的正确和有效。 Wolfram Gloger 在 Doug Lea 的基础上改进使得 glibc 的 malloc 可以支持多线程—— ptmalloc ,在 glibc-2.3.x. 中已经集成了 ptmal
gdb调试时局部变量不可查看问题
调试程序时,在gdb内p var,会提示 No symbol "var" in current context. 即使没有使用任何编译优化选项,仍然不能查看,放狗搜了一下,可能是这些变量被优化到寄存器中,gdb无法读取。 解决方案: 在编译是加入 ‘-gstabs+’  选项,比如: g++ -g -Wall  -gstabs+ -o main.o main.cpp gdb main,就可以查看局
没有atomic.h后如何在linux实现原子操作
2010-12-30更新 今天同事告诉我说有个/usr/include/alsa/iatomic.h,也能实现原子操作,使用的时候#include<alsa/iatomic.h>就可以了,原有的atomic系列函数这里都有,不过我还没试过。 -------------------------------正文---------------------------------------      在
gdb中调试signal信号
原发贴者 Couger,备查。 在console下按Ctrl-C后确实发送了SIGINT信号,但是gdb里的缺省设置将会导致由GDB截获的该信息,调试的应用程序无法接受到该信号。 有两种方法可以使调试的应用程序接受到信号: (1)改变gdb信号处理的设置 比如,以下设置会告诉gdb在接收到SIGINT时不要停止、打印出来、传递给调试目标程序 ============================
valgrind安装过程中无法定位libmpi.a中lam_mpi_commworld错误的解决办法。
问题描述: 安装valgrind 时,./configure成功后,make时提示错误/usr/bin/ld: /usr/lib64/libmpi.a(laminit.o): relocation R_X86_64_32S against  `lam_mpi_comm_world' can not be used when making a shared object; recompile wit
在应用程序中替换Linux中Glibc的malloc的四种方法
打算优化系统的内存分配,接管 glibc 提供的内存管理,但是整个工程的代码量很大,使用 malloc 、 realloc 、 calloc 和 free 的地方到处都是,如果自己写好的接口需要重命名所有的调用,先不说工作量,部分没有权限查看代码的 .a 文件就搞不定了。所以需要替换掉系统的 malloc ,保证原有调用的名称不变。经过尝试,共有四种方法可以替换,各有优缺点吧。 方案 1 使用环境