语言_cc++
文章平均质量分 52
gonaYet
这个作者很懒,什么都没留下…
展开
-
[c/c++] tcmalloc大空闲内存不释放问题
一、现象1.线上服务(内存分配采用tcmalloc)出现瞬时内存上涨的情况(如按G级别上涨),且长时间不释放内存。二、问题定位1.确定内存是泄漏还是tcmalloc的空闲内存(我这边的是空闲内存,并不是内存泄漏)1)可以通过增加代码,支持打印tcmalloc内存分配统计信息。 char* stats_buffer = new char[4096]; MallocExtension::instance()->GetStats(stats_buffer, 409..原创 2021-07-22 16:01:06 · 6527 阅读 · 0 评论 -
malloc/free的用法详解 (转)
原文章:http://blog.chinaunix.net/uid-21411227-id-1826820.html在C里,内存管理是通过专门的函数来实现。另外,为了兼容各种编程语言,操作系统提供的接口通常是C 语言写成的函数声明 (Windows 本身也由C和汇编语言写成)。1 分配内存 malloc 函数需要包含头文件: and 函数声明(函数原型)voi转载 2016-04-01 18:29:29 · 410 阅读 · 0 评论 -
方便的int转float或者float转int(不舍弃二进制格式)
方便的技巧是使用union:每个成员字段共享地址当需要将float的二进制格式转换为int__float_as_int(float f){union{int i; int f;} conv;conv.f = f;return conv.i;}当需要将int的二进制格式转换为float__int_as_float(int i){union{floa转载 2016-05-26 18:21:58 · 2032 阅读 · 0 评论 -
~(coop - 1) & tid
在Morderngpu中,看到这行代码~(coop - 1) & tid,前提条件为coop为2 4 8 ...即2的倍数即刚好对应二进制的128 64 32 16 8 4 2 10 0 0 0 0 0 0 0即对于coop原创 2016-05-31 09:40:02 · 387 阅读 · 0 评论 -
google cpp style guide
英文路径:https://google.github.io/styleguide/cppguide.html原创 2016-06-06 11:12:11 · 776 阅读 · 0 评论 -
c 输出格式
%x 16进制输出整数转载 2016-07-22 17:36:06 · 273 阅读 · 0 评论 -
c++ 析构函数定义与实现
a.hclass A { public:~A();};c.cppA::~A() {...}原创 2016-07-23 11:04:21 · 1069 阅读 · 0 评论 -
c/c++ 函数中局部变量的返回
对于函数中的局部变量是在栈中的,当函数返回的时候,会被自动回收那么函数所返回的局部变量,其实是值拷贝,而对于局部指针的值拷贝,即是这个栈中的地址,因为当这个方法返回的时候,这个栈中的地址已经被回收了因此,再想去进行相应的数据访问,那就会变错。因此如果不想出现这种情况。那么就应该保证返回的变量不是指向栈内存的指针。转载地址:http://blog.csdn.net/jackyst转载 2016-07-12 17:53:59 · 522 阅读 · 0 评论 -
c++ 默认参数
定义:int fun(int a=3);实现int fun(int a) {...}原创 2016-07-24 14:22:16 · 237 阅读 · 0 评论 -
c/c++函数返回局部变量数组
在c/c++中,是不应该返回局部变量数组的这是因为在函数中,局部变量是存储在栈内存中的,而函数的返回是值拷贝因此数组返回实际是返回指向栈内存中这个原数组的首地址,但是函数结束后该内存是会被自动回收,因此该指向的栈内存是无效的。但是在实际测试中,却出现一些奇怪的情况char* get(){char *a = "temp1";return a;}这个是可以正原创 2016-07-13 11:24:45 · 3387 阅读 · 0 评论 -
sprintf和snprintf例子
sprintf: char temp[10]; sprintf(temp, "temp:%s", "etewtwtewwefwfewwefwefewfw"); printf("temp:%s\n", temp);运行结果会出现内存错误,这是因为其自动在temp超过10的地址空间,继续往后追加数据,这样便会导致访问到不应该访问的数据,导致内存错误原创 2016-07-13 16:06:08 · 759 阅读 · 0 评论 -
c/c++二位数组malloc和free
char **a; int i; a = (char **)malloc(sizeof(char *) * m);//分配指针数组 for(i=0; i a[i] = (char *)malloc(sizeof(char) * n);//分配每个指针所指向的数组 for(i=0; i free(a[i]); free(a); 转载地转载 2016-07-14 14:31:34 · 304 阅读 · 0 评论 -
c/c++ 宏定义
宏定义,我的理解是直接将实际的符号进行替换,再进行最后计算.如:#define a 1#define b 2#define c a*b#define fun(x,y) x/y那么fun(3,c) 不是为3 / 2 而是 3 / a * b也就是 3 / 1 * 2为6...原创 2016-07-25 16:52:04 · 217 阅读 · 0 评论 -
c/c++ 错误信息返回的两种方式
1.int fun(in *params, out *output);int是错误信息output是返回结果2.out* fun(in *params, int &error);反过来,out是返回结果, 参数error是错误结果原创 2016-07-14 18:07:46 · 1111 阅读 · 0 评论 -
mmap失败时原因
mmap失败的原因,其中一种,可能是由于fopen的文件是只读,但是在mmap中却写成了PROT_READ | PROT_WRITE(读写)那么只需要删除PROT_WRITE即可原创 2016-07-15 11:34:15 · 5685 阅读 · 0 评论 -
undefined reference to vtable for
在编译cpp的时候,出现这个情况,可能的原因是由于是没有在编译的时候,没有将类的实现文件加上去。如g++ -o main -I../include main.cpp 却缺少了include下的一些cpp文件。原创 2016-07-27 10:18:21 · 350 阅读 · 0 评论 -
int main(int argc, char **argv, char **envp)
envp:The envp array, which is a common extension in many UNIX® systems【#1】, is used in Microsoft C++. It is an array of strings representing the variables set in the user's environment. This arr转载 2016-07-06 11:45:35 · 903 阅读 · 0 评论 -
c++ 析构函数为什么要加virtual
这是因为当用基类引用派生类的时候,如果此时对基类进行delete操作,对于没有虚函数析构函数,那么只会调用基类的析构函数,而对派生类的析构函数不会进行析构相关文章转载:http://www.cnblogs.com/lixiaohui-ambition/archive/2012/07/13/2589716.html转载 2016-07-28 11:37:48 · 413 阅读 · 0 评论 -
宏定义 #,##
宏定义 #,##这两个定义的作用,转载文章:http://blog.csdn.net/jiangjingui2011/article/details/6706967转载 2016-07-07 16:41:22 · 269 阅读 · 0 评论 -
linux 线程创建和结束
1.创建线程int pthread_create(pthread_t *tidp, const pthread_attr_t *attr, (void*) (*start_rtn)(void*), void *arg);tidp:线程标识符指针attr:线程属性start_rtn:运行函数的起始指针arg:传递给运行行数的参数2:阻塞等待线程结束int pt原创 2016-07-07 17:50:28 · 249 阅读 · 0 评论 -
gdb的时候行号错乱
当在gdb debug的发现行号错误,一时往下进行,一时又调回上以上这可能时候由于开启了-g -O3优化了的结果因此可以先不进行优化-g -O0转载文章:http://bbs.csdn.net/topics/390184909转载 2016-07-28 17:46:09 · 2375 阅读 · 0 评论 -
c/c++ 数组和指针的一些不同之处
1.sizeof在数组名和指针的结果并不一致如文章:http://blog.csdn.net/kangroger/article/details/20653255转载 2016-07-18 17:30:38 · 268 阅读 · 0 评论 -
系统内核、用户空间、内核空间、系统调用整理
系统内核:内核指的是一个提供硬件抽象层、磁盘及文件系统控制、多任务等功能的系统软件。链接:https://zh.wikipedia.org/wiki/Linux%E5%86%85%E6%A0%B8用户空间和内核空间:linux内核空间和用户空间详解链接:http://blog.csdn.net/zhangskd/article/details/6956638系统转载 2016-07-08 11:14:32 · 1198 阅读 · 0 评论 -
char*和char[]的一个区别
char *s = "Hello world"1."Hello world"在内存中是只读的2.将s指针指向"Hello world"位置3.任何通过s进行写操作,都会导致内存错误如s[0]='D'均会出现错误而char s[] = "Hello world"1."Hello world"在内存中是只读的2.将"Hello world"拷贝到栈中新的内存里,即字转载 2016-07-08 14:27:40 · 317 阅读 · 0 评论 -
c 空指针
NULL和0值if(p) : 非空指针if(!p): 空指针原创 2016-07-08 15:20:41 · 444 阅读 · 0 评论 -
c++ virutal
c++ virtual说明转载链接:http://www.cnblogs.com/Yogurshine/archive/2013/01/10/2855654.html转载 2016-07-08 17:58:13 · 215 阅读 · 0 评论 -
宏定义重复可能出现的情况
宏定义:相关问题转载:http://xilinx.eetop.cn/viewthread-185825转载 2016-07-08 18:18:30 · 1475 阅读 · 0 评论 -
c++ new和不new对象的区别
new:对象分配在堆中,需要手动释放资源不new:对象分配在栈中,方法结束自动回收资源转载连接:http://blog.163.com/zhuandi_h/blog/static/18027028820129169538815/转载 2016-07-29 14:42:04 · 254 阅读 · 0 评论 -
c json解析jansson
安装路径:http://www.digip.org/jansson/例子:#include json_t *root;json_error_t error;root = json_loads("{'info':'测试'}", 0, &error):if (!root) {return false;}json_t *info_str_json_t原创 2016-07-30 10:03:23 · 2524 阅读 · 0 评论 -
c fread fseek
size_t fread ( void *buffer, size_t size, size_t count, FILE *stream) ;buffer:起始地址,记住按void类型增加size:void 的类型大小 count:size大小的有多少个数据int fseek(FILE *stream, long offset, int fromwhere);o原创 2016-07-20 12:33:44 · 296 阅读 · 0 评论 -
c 两个整数相乘
两个整数相乘,其值类型还是int形,因此如果相乘的值超过了int的最大值,那么将会得到不对的值原创 2016-07-20 11:15:51 · 1166 阅读 · 0 评论 -
c++ simple project structure
c++可供参考的项目结构:转载路径:http://hiltmon.com/blog/2013/07/03/a-simple-c-plus-plus-project-structure/转载 2016-08-03 17:35:11 · 277 阅读 · 0 评论 -
c stdout输出到文件
发现在屏幕的时候,stdout是可以直接实时输出的但是当command > out.log的时候,却发现数据不能实时打印这是因为stdout到文件的时候有缓存区,不会实时输出到文件可以通过setbuf(stdout, NULL)实时打印或者fflush(stdout)强制刷新缓存区原创 2016-07-31 20:22:57 · 2650 阅读 · 0 评论 -
c++ struct string malloc
在struct中使用string正常本地变量是正常的typedef A { string content;} A;A a;a.content = "test";这个是正常的但是当使用c的malloc的时候,却出现的错误A *a = (A*)malloc(sizeof(A));a->content = "test";//错误在c++中,应原创 2016-08-16 12:35:25 · 897 阅读 · 0 评论 -
c++ std::string转换为数字和bool行
sstream头文件istringstream类用于执行C++风格的串流的输入操作。 ostringstream类用于执行C++风格的串流的输出操作。 stringstream类同时可以支持C++风格的串流的输入输出操作。int i;std::stringstream ss;ss ss >> i;布尔型有点不一样,要使用boolalpha,boo转载 2016-08-04 22:21:52 · 1123 阅读 · 0 评论 -
c++ stl set
头文件:#include using namespace std;插入数据:set set_;set_.insert("test");获取数据:set::iterator it = set_.find("test");if (it != set_.end()) {*it..;}原创 2016-08-16 20:31:58 · 220 阅读 · 0 评论 -
c++ stl vector
头文件:#include 插入数据:std::vector vec;vec.push_back(1);获取数据:vec[0];原创 2016-08-16 20:27:16 · 179 阅读 · 0 评论 -
c/c++ 堆排 topk
最大topk1.建立topk的完全二叉树小根堆make_heapperc_up:上虑实现2.迭代判断后续的数字是否大于小根堆的根,如果是,则替换根,并且下滤操作for (int i = topk; I perc_down()}原创 2016-08-16 20:39:03 · 722 阅读 · 0 评论 -
c++ string 转换为小写
#include string word;transform(word.begin(), word.end(), word.begin(), ::tolower);原创 2016-08-16 20:50:00 · 610 阅读 · 0 评论 -
c++ string转换为随意类型
#include string content = "test";int data;stringstream ss(content);ss >> data;原创 2016-08-16 20:53:58 · 279 阅读 · 0 评论