草庐IT

binary-log

全部标签

c++ - 读取 Elf Binary 中的 GOT 条目

我想写一个小函数的跟踪器。我使用ptrace。我在ubuntux86_64上。我想找到共享库函数的地址(比如printf)。但是我有一些关于全局偏移表的问题和疑问。我有以下代码:size_tbaseAddress=this->getBaseAddress();Elf_Ehdrconst*headerElf=static_cast(this->_manager.readMemory((void*)baseAddress,sizeof(Elf_Ehdr)));Elf_Phdrconst*headerProgram=static_cast(this->_manager.readMemory(

c++ - 避免 Boost Log 琐碎使用中的泄漏

我从使用booSTLog的服务器端应用程序获取valgrind泄漏报告,该应用程序与boost1.56一起分发。valgrind报告是:==8021==1,159个block中的37,088个字节在1,642的丢失记录1,613中肯定丢失了==8021==at0x4A05588:memalign(vg_replace_malloc.c:727)==8021==by0x3FDA61118F:tls_get_addr_tail(在/lib64/ld-2.12.so中)==8021==by0x3FDA61165F:__tls_get_addr(in/lib64/ld-2.12.so)==80

rockchip启动的log

DDRVersion1.2720211018Inchannel0CS=0MR0=0x18MR4=0x1MR5=0x1MR8=0x8MR12=0x72MR14=0x72MR18=0x0MR19=0x0MR24=0x8MR25=0x0CS=1MR0=0x18MR4=0x1MR5=0x1MR8=0x8MR12=0x72MR14=0x72MR18=0x0MR19=0x0MR24=0x8MR25=0x0channel1CS=0MR0=0x18MR4=0x1MR5=0x1MR8=0x8MR12=0x72MR14=0x72MR18=0x0MR19=0x0MR24=0x8MR25=0x0CS=1MR0=0x1

c++ - constexpr exp、log、pow

我想使用constexpr标准版本函数如exp,log,pow以便携的方式。我目前有一个非可移植解决方案g++treatsthesefunctionsasconstexpr-anon-compliantextensionofC++,但我担心可移植性和面向future的能力(我想有一天这个扩展可能会从g++中删除)。我对constexpr感兴趣这些功能的版本,而不是模板元程序-我希望在编译时和运行时都可以使用相同的功能。我不需要C兼容性,但我确实需要快速实现-诸如泰勒级数展开之类的幼稚实现太慢了。如何实现这些功能?我对exp特别感兴趣,log,和pow我从研究中学到的一些相关的东西这些函

c++ - 为什么 std::binary_search 的参数是前向迭代器?

在阅读http://en.cppreference.com/w/cpp/algorithm/binary_search时我注意到它将转发迭代器作为参数。现在我很困惑,因为我认为它宁愿是一个随机访问迭代器,所以二进制搜索实际上是二进制的。为了满足我的好奇心,我写了一个小程序:#include#include#include#include#include#include#include#includeintmain(){std::uniform_int_distributionuintdistr(-4000000,4000000);std::mt19937twister(std::chr

c++ - 使用 ios::binary 或 ios::out 或两者打开文件有什么区别?

我正在尝试找出打开文件之间的区别:fstream*fileName*("FILE.dat",ios::binary);或fstream*fileName*("FILE.dat",ios::out);或fstream*fileName*("FILE.dat",ios::binary|ios::out);我发现所有这些形式都是相同的:在所有情况下,文件上的相同输出都是使用*fileName*生成的。或*fileName*.write(). 最佳答案 ios::out打开文件进行写入。ios::binary确保数据被读取或写入,而无需在运

c++ - O(log N) 查找和更新的数据结构,考虑到小型 L1 缓存

我目前正在处理一个遇到性能问题的嵌入式设备项目。分析找到了一个我想消除的O(N)操作。我基本上有两个数组intA[N]和shortB[N].A中的条目是唯一的,并由外部约束排序。最常见的操作是检查一个特定的值a出现在A[].不常见但仍然常见的是对A[]元素的更改.新值与之前的值无关。由于最常见的操作是查找,因此B[]进来。它是A[]中的索引排序数组,这样A[B[i]]当且仅当i.这意味着我可以在A中找到值使用二分查找。当然,当我更新A[k],我必须找到k在B并将其移动到新位置,以保持搜索顺序。因为我知道A[k]的新旧值,那只是一个memmove()B[]的子集k的新旧位置之间.这是我需

c++ - 替换 std::binary_function

std::binary_function现已弃用,将在c++17中删除.我搜索了不同的出版物,但我找不到替换它的确切方法。我想知道我应该如何在c++11中编写以下代码风格。templateinlineTabsolute(constT&x){return(x>=0)?x:-x;}templatestructabsoluteLess:publicstd::binary_function{booloperator()(constT&x,constT&y)const{returnabsolute(x)structabsoluteGreater:publicstd::binary_functio

c++ - 快速定点 pow、log、exp 和 sqrt

我有一个定点类(10.22),我需要一个pow、一个sqrt、一个exp和一个log函数。唉,我什至不知道从哪里开始。谁能给我一些有用文章的链接,或者更好的是,给我一些代码?我假设一旦我有了一个exp函数,那么实现pow和sqrt就变得相对容易了。pow(x,y)=>exp(y*log(x))sqrt(x)=>pow(x,0.5)我发现困难的只是那些exp和log函数(好像我记得我的一些日志规则,但我记不起关于它们的更多内容)。据推测,sqrt和pow也会有一种更快的方法,因此即使它只是说使用我上面概述的方法,也将不胜感激这方面的任何指针。请注意:这必须是跨平台和纯C/C++代码,所以

c++ - 错误 C2679 : binary '<<' : no operator found which takes a right-hand operand of type 'std::string' (or there is no acceptable conversion)

这是我的代码,我该如何解决这个错误?#include"stdafx.h"#includeusingnamespacestd;intmain(){stringtitle="THEWORLDOFPIRATES";cout错误是binary' 最佳答案 你忘了#include使用std::string不包括它的header适用于一些间接导入部分的编译器进入他们的或其他标题,但这不是标准的,不应依赖。此外,当您尝试输出字符串时,它们通常会中断,因为它们仅包含实现的一部分,并且缺少实现operator的部分。.