cpp

Valgrind检测非法访问内存

匿名 (未验证) 提交于 2019-12-02 23:34:01
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/chengqiuming/article/details/90311664 #include<iostream> #include<stdlib.h> using namespace std; void func(){ int *x=(int *)malloc( 10 * sizeof ( int ) ) ; x[10]=0; } int main(){ func(); cout<<"done"<<endl; return 0; } [root@localhost charpter05]# g++ -g 0508test.cpp -o 0508 [root@localhost charpter05]# ./0508 done [root@localhost charpter05]# valgrind ./0508 ==16719== Memcheck, a memory error detector ==16719== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al. ==16719== Using Valgrind-3.15.0 and LibVEX; rerun with -h for copyright

Valgrind检测内存读写越界

匿名 (未验证) 提交于 2019-12-02 23:34:01
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/chengqiuming/article/details/90311919 内存读写越界是指访问了没有权限访问的内存地址空间,比如访问数组时越界,对动态内存访问超出了申请时内存的大小范围。 #include<stdlib.h> #include<iostream> using namespace std; int main(){ int len=4; int *pt=(int *)malloc(len*sizeof(int)); int *p=pt; for(int i=0;i<len;i++) p++; *p=5; cout<<"the value of p is "<<*p<<endl; return 0; } [root@localhost charpter05]# g++ -g 0511.cpp -o 0511 [root@localhost charpter05]# ./0511 the value of p is 5 [root@localhost charpter05]# valgrind ./0511 ==18335== Memcheck, a memory error detector ==18335== Copyright (C) 2002-2017, and

Thrift学习笔记—IDL基本类型

自闭症网瘾萝莉.ら 提交于 2019-12-01 08:36:50
原文地址: http://zhwen.org/xlog/?p=658 thrift 采用 IDL ( Interface Definition Language )来定义通用的服务接口,并通过生成不同的语言代理实现来达到跨语言、平台的功能。在 thrift 的 IDL 中可以定义以下一些类型:基本数据类型,结构体,容器,异常、服务 1 基本类型 bool: 布尔值 (true or false), one byte byte: 有符号字节 i16: 16 位有符号整型 i32: 32 位有符号整型 i64: 64 位有符号整型 double: 64 位浮点型 string: Encoding agnostic text or binary string 基本类型中基本都是有符号数,因为有些语言没有无符号数,所以 Thrift 不支持无符号整型。 2 特殊类型 binary: Blob (byte array) a sequence of unencoded bytes 这是 string 类型的一种变形,主要是为 java 使用,目前我主要使用 C++ 的语言,所以 java 的这个类型没有用过 3 struct thrift 中 struct 是定义为一种对象,和面向对象语言的 class 差不多 ., 但是 struct 有以下一些约束: struct 不能继承,但是可以嵌套