Articles of c + +

getaddrinfo内存泄漏

我有这个代码获取有关IPv4地址的信息: struct addrinfo hints, *info = NULL; char addr4[INET_ADDRSTRLEN]; memset(&hints, 0, sizeof(hints)); hints.ai_socktype = SOCK_STREAM; hints.ai_family = AF_INET; if (!getaddrinfo(argv[hostPara], NULL, &hints, &info)) { inet_ntop(AF_INET, &((const sockaddr_in *)info->ai_addr)->sin_addr, addr4, INET_ADDRSTRLEN); } if (info != NULL) { freeaddrinfo(info); } 但如果我testingargv [hostPara]是“www.google.com”我从valgrind得到这个: ==3632== 168 bytes in 1 blocks are still reachable in loss record 1 of 1 […]

Canot编译使用boost的odeint的C ++

我在Ubuntu 12.04上,并且已经在/ usr / include中有了一些提升。 我做了一个 sudo apt-get install libboost-all-dev 并且也安装了很多文件。 我不想删除这个提升并从源代码安装,因为其他几个软件包依赖于Ubuntu的版本。 这是我想要运行的示例代码: #include <iostream> #include <boost/numeric/odeint.hpp> using namespace std; using namespace boost::numeric::odeint; typedef vector< double > state_type; const double sigma = 10.0; const double R = 28.0; const double b = 8.0 / 3.0; void lorenz( state_type &x , state_type &dxdt , double t […]

使用Opencv直接从networking摄像头获取灰度图像

由于在我的embedded式应用程序中,我需要灰度图像,为了节省时间,我试图直接从networking摄像头获取帧,而不需要从RGB格式转换中获取帧。 我find的例子获取RGB中的帧,然后将其转换 cvCvtColor(im_rgb,im_gray,CV_RGB2GRAY) 谢谢。

如何指定在Linux中使用哪个接口

是否有可能绑定一个udp套接字到一个特定的接口,所以它通过该接口发送数据? 我有一个应用程序使用多个Udp套接字来发送数据,它运行在具有多个接口的机器上。 我知道可以通过使用下面的代码来指定接口名称: int UdpSocket::open(const char *interface) { send_fd_ = ::socket(AF_INET, SOCK_DGRAM, 0); if (send_fd_ < 0) { perror("socket"); return -1; } int val = 1; int rc = ::setsockopt(send_fd_, SOL_SOCKET, SO_REUSEADDR, &val, sizeof(val)); if (rc < 0) { perror("sesockopt"); close(); return -1; } unsigned char ttl = 16; rc = ::setsockopt(send_fd_, IPPROTO_IP, IP_MULTICAST_TTL, &ttl, […]

为MPC6050编写驱动程序i2c

我是C新手,我尝试写一个MPC6050加速计的驱动程序。 (Android 4.2.2的内核3.4)。 这是这个问题的下列。 这个页面和这个帮助我,但我不能使用驱动程序呢: arch/arm/mach-sun7i/core.c:77:44: warning: 'sun7i_i2c_platform_data' defined but not used [-Wunused-variable] arch/arm/mach-sun7i/core.c:136:41: warning: 'sun7i_i2c_platform_device' defined but not used [-Wunused-variable] 我正在处理/ANDROID/lichee/linux-3.4/arch/arm/mach-sun7i/core.c文件。 (相当于board-machine.c) 我粘贴了每个结构基础的结构。 初始化函数是,我希望确定,像这样: /* ACCELEROMETER*/ #include <linux/i2c-gpio.h> #include <linux/mpu.h> #include <linux/i2c.h> #include <mach/i2c.h> #include <mach/gpio.h> #define I2C_SDA TWI_LCR_SDA_EN #define I2C_SCL TWI_LCR_SCL_EN /* * /////////// from linux/i2c-gpio.h ////////// * struct i2c_gpio_platform_data { unsigned int […]

我怎么知道一个进程正在运行的核心?

我目前正在开发一个关于在linux环境下将进程设置为一个核心的项目。 我使用sched_setaffinity来完成这项工作,我想知道是否有一些由linux提供的函数来获取进程运行的核心。 我使用顶级命令,并发现它可以得到这个信息使用j选项。 所以我相信有一些方法可以在用户空间获得这个信息。

简单的C代码可以在HPUX上正常工作,但是Linux上的段错误。 为什么?

我很长时间没有做过任何严肃的C,希望能够快速解释一下。 以下代码在HP / UX上编译并运行良好。 它在GCC 4.3.2上编译没有任何警告(甚至是在gcc-Wall中),但在Linux上运行时却是segfaults。 谁能解释为什么? #include <stdio.h> int main() { char *people[] = { "Abigail", "Bob" }; printf("First: '%s'\n", people[0]); printf("Second: '%s'\n", people[1]); /* this segfaults on Linux but works OK on HP/UX */ people[1][0] = 'R'; printf("First: '%s'\n",people[0]); return(0); }

如何将目录path转换为唯一的数字标识符(Linux / C ++)?

我正在调查的方式采取一个目录(文件夹),并派生某种forms的唯一的数字标识符。 我调查过“string哈希”的方法,但是, 鸽子洞原则意味着永远不可能为每一个string派生一个真正唯一的数字。 string到唯一哈希是不好的。 我最近一直在调查其他方法来实现我的目标,因此有以下问题要问: 目录时间戳 – 他们有多“独特”? 这里所描述的“stat”报告的时间戳记是什么样的(第二篇文章)? 如果分辨率足够小,是否有可能多个文件夹在Linux系统上共享完全相同的时间戳? 如果任何人有其他方法/技术,他们想分享,我会很高兴听:) 编辑1为了澄清我的用例,以回应迄今为止发布的答案:我正在Android平台上工作,所以文件系统没有链接到任何其他(除了Micro SD卡等可移动媒体除外)。 我将每个path插入数据库,但试图避免查询表时string比较。 地图/ hashmaps的使用不是一个选项在这里。 是的,path本身是唯一的,但理想情况下,我需要一个数字标识符,可以用来查询表,而不是path本身。 每个path的标识符也必须是唯一的。 我已经用std :: collat​​e进行了实验,但是发现哈希中有很多碰撞(一个数据集有20,000条path,大约有100个碰撞)。 更令人惊讶的是,每次我的应用程序运行时,哈希似乎都大不相同。 我想知道它是否以某种方式播种? 非常感谢,P

使用fork()在C(不是C ++)中创build3个孩子

嗨,我一直在制定一项计划,让孩子们分叉,然后再从每个孩子那里分娩更多的孩子,但这不是我需要帮助的。 当我运行我的程序(在这里它是一个function,但工作原理是一样的)我应该有一个父母(PPID)产卵3个孩子(PIDS = 1,2,3),但我得到的是相同的PID和PPID 3次(我现在的代码),或者在我得到3个父母之前,每个父母都有一个孩子,PPIDS与PIDS不同,但PPID与以前的孩子PID一样。 在我最近的尝试中,从不在父子(父亲)的信息上方显示孩子(儿子)。 它应该看起来像这样 [dad] hi am I PID 1234 and I come from ####(dont care what this number is) [son] hi i am PID 1111 and I come from PPID 1234 [son] hi i am PID 1112 and I come from PPID 1234 [son] hi i am PID 1113 and I […]

生成(非常)大的非重复整数序列,无需预先混洗

背景 我有一个简单的媒体客户端/服务器,我写了,我想产生一个非显而易见的时间价值,我发送每个命令从客户端到服务器。 时间戳会有相当的数据(纳秒分辨率,即使由于现代操作系统中定时器采样的限制,它不是真正准确的),等等。 我试图做的(在Linux上,C语言)是生成一个n位值的序列(让我们假设数据现在存储在128位的int数组元素中),没有重叠/碰撞值。 然后我将一个伪随机的128位值/数字作为“salt”,将其应用于时间戳,然后开始向服务器发送命令,递增预先腌制/预先哈希的值。 时间戳大小的原因是因为时间戳可能需要适应非常长的时间。 题 我怎么能用一个初始的盐值来完成这个序列(不碰撞)呢? 听起来和我的目标一致的最好的方法是从这篇文章中注意到 : 如果选项1对您来说不够“随机”,则使用全局(32位)计数器的CRC-32哈希值。 在N位整数和它们的CRC-N之间存在1对1的映射(双射),所以唯一性仍将得到保证。 但是,我不知道: 如果可以(有效地)扩展到128位数据。 如果某种加法/乘法的盐值为序列提供初始种子,将会扰乱它或引入冲突。 跟进 我意识到我可以使用来自libssl或类似的128位随机哈希,但我希望使用相同的盐值的远程服务器能够将散列的时间戳转换回它们的真实值。 谢谢。