
C/C++
文章平均质量分 80
zm_21
这个作者很懒,什么都没留下…
展开
-
C++ 栈和堆 new和delete
1. 数组内存空间分配在栈内 栈 堆myA[0]…myA[4] 2. int* myAPtr = new int [5] 栈 堆myAPtr ---------->原创 2012-10-21 21:43:56 · 516 阅读 · 0 评论 -
利用VS2005进行dump文件调试
二、 VS2005分析dump文件In this simple application, there is an unhandled Access Violation Reading exception, because GetNameFromDatabase returns a NULL pointer, and this pointer is passed into转载 2014-05-04 11:02:30 · 730 阅读 · 0 评论 -
利用VS2008通过dump文件确定crash位置
1. 在产品代码中添加http://blog.youkuaiyun.com/zm_21/article/details/24962159原创 2014-05-04 11:12:22 · 1260 阅读 · 0 评论 -
使用SetUnhandledExceptionFilter和DebugMiniDumpFilter来使程序在崩溃时生成dump文件 .
/* * blackboy psyc209@163.com * QQ群: 135202158 * 转载请注明作者及出处http://blog.youkuaiyun.com/blackboyofsnp/article/details/7218488 */关于SetUnhandledExceptionFilter函数: http://msd转载 2014-05-04 10:04:06 · 985 阅读 · 0 评论 -
应用Buildbot实施c++持续集成
参考: http://perl-qa.hexten.net/wiki/index.php/Buildbothttp://blog.chinaunix.net/u2/68938/showart_1076484.htmlhttp://blog.youkuaiyun.com/yurenjimi/archive/2008/12/01/3413829.aspxhttp://www.lothar.com/转载 2014-05-07 15:49:41 · 2801 阅读 · 0 评论 -
object-c 入门基础篇
一、Objective-C与C的渊源 Objective-C诞生于 20 世纪 80 年代,由Brad Cox 发明,意在将流行的、可移植的 C 语言与优雅的 Smalltalk 语言结合在一起。Objective-C 是 C 语言的一个扩展集,它以 C 语言为基础,在语言中添加了一些微妙但意义重大的特性。 苹果公司的iphone平台采用Objective-转载 2014-06-24 17:27:09 · 554 阅读 · 0 评论 -
在Windows环境搭建Object C开发环境
1. 安装编译环境 Object C和其他很多语言一样,都需要有一个编译器。Object C 是在GCC下编译的。GCC(GNU Compiler Collection,GNU编译器集合),是一套由 GNU 开发的编程语言编译器。很多人想到学习Object C就想到mac电脑,想到XCode开发工具。其实在Windows环境一下也可以编译Object C。 首先下载Window转载 2014-06-24 17:30:10 · 1082 阅读 · 0 评论 -
非阻塞模式
非阻塞模式是指:套接字在执行操作时,调用的函数不管操作是否完成都会立即返回的工作模式。 非阻塞套接字在处理同时建立的多个连接等方面具有明显的优势。但是使用过程中有一定的难度。由于函数在操作没有完成后也仍然会返回,为了实现某些功能必须循环调用,直到完成功能为止。因此非阻塞模式会使程序效率非常低。 把套接字设置为非阻塞模式,即告诉系统:在调用Windows socket API时,转载 2014-07-18 14:12:55 · 1035 阅读 · 0 评论 -
socket阻塞与非阻塞,同步与异步
1. 概念理解 在进行网络编程时,我们常常见到同步(Sync)/异步(Async),阻塞(Block)/非阻塞(Unblock)四种调用方式:同步: 所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回。也就是必须一件一件事做,等前一件做完了才能做下一件事。例如普通B/S模式(同步):提交请求->等待服务器处理->处理完毕返回转载 2014-07-18 14:35:38 · 521 阅读 · 0 评论 -
C语言编译和链接和加载
### http://www.cnblogs.com/oubo/archive/2011/12/06/2394631.html ### 一、概述C语言的编译链接过程要把我们编写的一个c程序(源代码)转换成可以在硬件上运行的程序(可执行代码),需要进行编译和链接。编译就是把文本形式源代码翻译为机器语言形式的目标文件的过程。链接是把目标文件、操作系统的启动代码转载 2014-07-18 16:51:32 · 5724 阅读 · 0 评论 -
非阻塞
#include #include #include #include #pragma comment(lib, "ws2_32.lib") #define TIME_OUT_TIME 20 //connect超时时间20秒void geturl(char *url) { WSADATA WSAData={0}; SOCKET s转载 2014-07-18 10:29:55 · 566 阅读 · 0 评论 -
C语言程序的编译和链接过程
1.程序的编译 一般而言,大多数编译系统都提供编译驱动程序(complier driver),根据用户需求调用语言预处理器,编译器,汇编器和链接器.例如有如下历程://main.cvoid swap();int buf[2]={1, 2};int main(){ swap(); return 0;} //swap.cint *bufp0 = &b转载 2014-07-18 17:16:31 · 1096 阅读 · 0 评论 -
Linux调用backtrack函数打印程序崩溃时的调用堆栈
可以给自己的程序都加上这个东西,便于快速的找到错误吧,看到别人都是这么用的#include#include#include#include //signal 函数用法参考http://www.kernel.org/doc/man-pages/online/pages/man2/signal.2.html//backtrace ,backtrace_symbo转载 2014-06-30 16:57:39 · 8830 阅读 · 0 评论 -
C++:STL标准入门汇总
学无止境!!!第一部分:(参考百度百科) 一、STL简介STL(Standard Template Library,标准模板库)是惠普实验室开发的一系列软件的统称。它是由Alexander Stepanov、Meng Lee和David R Musser在惠普实验室工作时所开发出来的。现在虽说它主要出现在C++中,但在被引入C++之前该技术就已经存在了很长的一段时间。转载 2014-07-22 15:12:19 · 466 阅读 · 0 评论 -
【C++专题】static_cast, dynamic_cast, const_cast探讨
首先回顾一下C++类型转换:C++类型转换分为:隐式类型转换和显式类型转换第1部分. 隐式类型转换又称为“标准转换”,包括以下几种情况:1) 算术转换(Arithmetic conversion) : 在混合类型的算术表达式中, 最宽的数据类型成为目标转换类型。 int ival = 3;double dval = 3.14159;转载 2014-07-08 10:42:50 · 513 阅读 · 0 评论 -
虚函数表
言 C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,RTTI技术,虚函数技术,要么是试图做到在编译时决议,要么试图做到运行时决议。 关于虚函数的使用转载 2014-07-10 11:29:23 · 419 阅读 · 0 评论 -
Fxcop入门
1. 下载原创 2014-11-05 15:31:53 · 773 阅读 · 0 评论 -
ReviewBoard安装和配置札记
目前部门还没有采用Pair Programming那种时时刻刻都在review代码的工作方式,代码Review多采用走查方式,即代码写完后召开一个Code Review的Meeting,集中时间和经验丰富的人力对重点代码进行筛查,这种方式的代码Review有利,但也有弊。其弊端在于低效和覆盖面小。做一次走查需要N多人参与若干个小时,而在这段时间里不是每个参与者都能极其高效的参与到走查中转载 2015-06-23 17:27:01 · 3217 阅读 · 0 评论 -
编写的windows程序,崩溃时产生crash dump文件的办法 .
一、引言dump文件是C++程序发生异常时,保存当时程序运行状态的文件,是调试异常程序重要的方法,所以程序崩溃时,除了日志文件,dump文件便成了我们查找错误的最后一根救命的稻草。windows程序产生dump文件和linux程序产生dump文件的方式不一样,linux默认是不让产生core dump文件,只要在用户自己的~/.bash_profile文件中增加ulimit -S -c u转载 2014-04-30 16:20:22 · 2225 阅读 · 1 评论 -
Google Breakpad: 实战crash .
还是来自Google:http://code.google.com/p/google-breakpad/wiki/LinuxStarterGuide由于有代码等原因,本人直接按自己理解,白话,E文好的直接点链接看。怎样把Breakpad加入你的程序呢,E文是母语的直接点连接。 How To Add Breakpad To Your Linux App转载 2014-04-30 15:55:24 · 9415 阅读 · 0 评论 -
僵尸进程
In UNIX System terminology, a process that has terminated,but whose parent has not yet waited for it, is called a zombie. 在UNIX 系统中,一个进程结束了,但是他的父进程没有等待(调用wait / waitpid)他, 那么他将变成一个僵尸进程。 但是如果该进程的父进程已转载 2014-01-20 10:09:47 · 713 阅读 · 0 评论 -
浅谈C/C++中可变参数的原理
要理解可变参数,首先要理解函数调用约定, 为什么只有__cdecl的调用约定支持可变参数,而__stdcall就不支持?实际上__cdecl和__stdcall函数参数都是从右到左入栈,它们的区别在于由谁来清栈,__cdecl由外部调用函数清栈,而__stdcall由被调用函数本身清栈, 显然对于可变参数的函数,函数本身没法知道外部函数调用它时传了多少参数,所以没法支持被调用函数本身清栈(__转载 2013-01-27 21:46:28 · 368 阅读 · 0 评论 -
12个有趣的C语言问答
0,gets() 方法Q:以下代码有个被隐藏住的问题,你能找到它吗?A:这个不显眼的问题就是使用了 gets() 方法。此方法接受一个string类型参数,但是却没有检测此数值是否 有足够的空间来拷贝数据。所以这里我们一般用 fgets() 方法将来的更好。#include int main(void) { char buff[10]; memset(bu转载 2013-01-27 21:41:41 · 410 阅读 · 0 评论 -
使用apr-util中的DBD API
1. 简介在Apache2.1版本中引入了DBD 框架,DBD提供了一个统一的、抽象的数据库操作接口,封装了不同数据库之间的接口和实现差异。可以使我们很容易的编写跨数据库(coss-database)的程序。2. 说明 本文的目的是简单的介绍如何在C开发的程序中开始 使用DBD,而不具体介绍每个API的用法,所有接口的用法在DBD的接口文件apr-dbd.h中有详细转载 2013-02-17 10:57:34 · 2354 阅读 · 1 评论 -
__stdcall,__cdecl,_cdecl,_stdcall,__fastcall,_fastcall 区别简介
1.今天写线程函数时,发现msdn中对ThreadProc的定义有要求:DWORD WINAPI ThreadProc(LPVOID lpParameter);不解为什么要用WINAPI宏定义,查了后发现下面的定义。于是乎需要区别__stdcall和__cdecl两者的区别; #define CALLBACK __stdcall#define WINAPI __stdcall#转载 2013-04-12 15:41:43 · 612 阅读 · 0 评论 -
freopen
函数名: freopen功 能: 替换一个流,或者说重新分配文件指针,实现重定向。如果stream流已经打开,则先关闭该流。如果该流已经定向,则freopen将会清除该定向。此函数一般用于将一个指定的文件打开一个预定义的流:标准输入、标准输出或者标准出错。用 法: FILE *freopen(const char *filename,const char *type, FILE *stre转载 2013-03-21 15:54:24 · 1586 阅读 · 1 评论 -
apr动态加载.dll和.so
为了代码能同时支持动态加载.dll和.so,所以使用apr。当然,直接使用windows和linux的动态加载也可以,写两个applications也能做到For example, 动态加载libtest.dll和libtest.so1. 新建一VS工程2. 在工程属性中,加入apr的include路径和Lib库的所在路径3. 在工程属性Preprocessor中,加入WINDOW原创 2012-10-17 10:52:06 · 1233 阅读 · 0 评论 -
使用cppcheck检查代码
Cppcheck is an static analysis tool for C/C++ code. cppcheck主页:http://cppcheck.sourceforge.net/使用说明见:http://cppcheck.sourceforge.net/manual.html下载安装cppcheck后, 可以如下测试:d:\temp\cppche转载 2013-07-29 17:31:22 · 1520 阅读 · 0 评论 -
C++ Profiler工具之初体验
概要:本文同期调研了google profile工具以及其他常用profile的工具,如GNU gprof、oprofile等(都是开源项目),并对其实现原理做了简单分析和比较。希望对之后的推广使用或二期开发有所帮助。 一、 GUN Gropf Gprof是GNU profiler工具。可以显示程序运行的“flatprofile”,包括每个函数的调用次数,每个函转载 2013-08-08 14:09:28 · 2781 阅读 · 0 评论 -
sysinfo函数使用方法
原文地址:sysinfo函数使用方法介绍Linux中,可以用sysinfo来获取系统相关信息。正文Linux中,sysinfo是用来获取系统相关信息的结构体。函数声明和原型:#include int sysinfo(struct sysinfo *info);结构体信息:在Linux 2.3.16中,结构体的信息是(单位是字节):转载 2013-09-30 11:16:07 · 1764 阅读 · 0 评论 -
sysconf
头文件#include 2函数原型long sysconf (int name);3说明sysconf() 返回选项 (变量) 的当前值,这个值可配置的但也是受系统限制的。在成功完成的情况下,sysconf() 返回变量的当前值。该值受到的限制将少于编译时 , 或 中可用的对应值。大多数这些变量的值在调用进程的生存时间内不变。如果出错,那么函数返回 -1 ,并适当地转载 2013-09-30 11:18:48 · 2031 阅读 · 0 评论 -
工商银行在线支付接口
参考了下面博客:http://www.cnblogs.com/gonganruyi/archive/2011/07/01/2095463.html1、首先需要注册工行提供的ICBCEBankUtil.dll,将ICBCEBankUtil.dll和infosecapi.dll复制到system32文件夹下CMD输入regsvr32 ICBCEBankUtil.dll注册控件。WINDOWS SE转载 2013-09-24 10:01:39 · 25852 阅读 · 3 评论 -
详解GCC的下载和安装
下载 在GCC网站上(http://gcc.gnu.org/)或者通过网上搜索可以查找到下载资源。目前GCC的最新版本为 3.4.0。可供下载的文件一般有两种形式:gcc-3.4.0.tar.gz和gcc-3.4.0.tar.bz2,只是压缩格式不一样,内容完全一致,下载其中一种即可。解压缩 根据压缩格式,选择下面相应的一种方式解包(以下的“%”表示命令行提示符):%转载 2013-11-28 15:58:57 · 2475 阅读 · 0 评论 -
gdb gcc linux白盒测试流程
本文主要结合gdb和gcov开源工具,在linux环境下进行白盒测试。白盒测试的主要目的有两点,一点是验证软件需要是否在代码中被覆盖,二是进行代码覆盖率分析,尽可能多的覆盖所有软件代码。显然,最重要的第一点。分析代码覆盖率就是为了检查代码跟需求是否匹配,然后再继续根据需求添加新代码,或者删除掉根本没有执行的死代码。所以当代码覆盖率达到100%,说明代码已经很完美的匹配了软件需求,白盒测试工转载 2013-11-29 17:02:03 · 1406 阅读 · 0 评论 -
Regex库安装小结
在学习正则表达式后,我急切地想要通过编程来实现一些功能。通过网上的一番查阅得知boost.regex库中提供了我所要的东西。毫不夸张,我因为知道了boost这个库而高兴了好几天。。。那么,进入正题,要使用boost库必须要做些麻烦事情而不是一个include就能了结了。事实上,当你完成一次安装以后,你会发觉何其容易。官方给出regex库的安装步骤,虽然我根据这个步骤没有做成功,但官方的步骤转载 2014-01-02 17:05:37 · 1852 阅读 · 0 评论 -
C++中的类型转换
1、static_cast Operator MSDN: The expression static_cast ( expression ) converts expression to the type of type-id based solely on the types present in the expression. No run-time type check i转载 2014-01-07 16:31:37 · 614 阅读 · 0 评论 -
volatile
就像大家更熟悉的const一样,volatile是一个类型修饰符(type specifier)。它是被设计用来修饰被不同线程访问和修改的变量。如果没有volatile,基本上会导致这样的结果:要么无法编写多线程程序,要么编译器失去大量优化的机会 1作用volatile的作用: 作为指令关键字,确保本条指令不会因编译器的优化而省略,且要求每次直接读值.简单地说就是防止编译器对代码进转载 2014-01-07 17:22:53 · 544 阅读 · 0 评论 -
程序的内存分配
一、预备知识―程序的内存分配一个由c/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)― 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。2、堆区(heap) ― 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。转载 2014-01-17 13:27:47 · 573 阅读 · 0 评论 -
win7下安装redmine2.3.2
环境:Win7 64位&32位 Mysql5.6Railsinstaller3.0.0Redmine2.3.2参考资料:官网安装指南http://www.redmine.org/projects/redmine/wiki/RedmineInstallgem install mysql2 错误解决http://rubyer.me转载 2015-06-24 11:02:08 · 1169 阅读 · 0 评论