VC
dolphin98629
这个作者很懒,什么都没留下…
展开
-
windows 文件描述符 _open_osfhandle
最近我们有一个需求,要求将windows控制台程序中通过printf打印的字符串信息全部重定向到另一个远程控制终端上去;并且也将标准输入也重定向到远程终端。重定向信息的传输用TCP传输。TAG:printf重定向 最近我们有一个需求,要求将windows控制台程序中通过printf打印的字符串信息全部重定向到另一个远程控制终端上去;并且也将标准输入也重定向到远程终端。重定向信息的传输用TCP传输。解决这个问题,其实就是要求能够截获printf的字符数据,使其不在控制台上打印,而是通过s...原创 2020-11-20 13:46:30 · 1936 阅读 · 0 评论 -
VC使用CRT调试功能检测内存泄漏
/***********************************************************************************检测内存泄漏的基本工具是调试器和CRT调试堆函数。为了使用调试堆函数,在你的程序中你必须含有下面的说明:#define _CRTDBG_MAP_ALLOC#include#include 必须保证上面声明的顺转载 2017-05-22 15:05:41 · 271 阅读 · 0 评论 -
typedef和typename关键字
1、类型说明typedef类型说明的格式为:typedef 类型 定义名;类型说明只定义了一个数据类型的新名字而不是定义一种新的数据类型。定义名表示这个类型的新名字。例如: 用下面语句定义整型数的新名字:typedef int SIGNED_INT;使用说明后, SIGNED_INT就成为int的同义词了, 此时可以用SIGNED_INT 定义整型转载 2017-08-30 17:28:02 · 587 阅读 · 0 评论 -
Windows中使用CRT函数检查内存泄露和溢出
C++中可以使用new或malloc等函数分配内存,通常与delete和free配合使用,但是如果不小心遗忘而程序在持续new或malloc时就会造成程序所占用的内存越来越大,即为“内存泄露”。通常写数据的时候必须在程序开辟的空间中写,如果不小心写到了不是程序请求分配的地址中,就可能覆盖别的有效数据导致程序工作不正常,最常见的就是分配一个数组结果写的时候传入的下标过大导致写超了,这就是“内存溢出”转载 2017-09-27 15:15:46 · 708 阅读 · 0 评论 -
cygwin跨平台移植 gcc+vc联合使用的方法和注意事项
前段时间做一个把linux代码移植到vc上的工程,选择cygwin环境,直接交叉编译通过。后来为了调试方便需要把源代码全部放到vc下编译,在网上搜索相关资料,发现在cygwin官方的FAQ中给出了具体的方法。下面我就里面的关键步骤做一个简单的解释:首先是官方的原文: How do I use cygwin1.dll with Visual Studio or MinGW?转载 2017-09-28 17:07:40 · 486 阅读 · 0 评论 -
支持 C++11/14/17 功能(现代 C++)
https://msdn.microsoft.com/zh-cn/library/hh567368.aspx若要了解有关 Visual Studio 2017 RC 的最新文档,请参阅 Visual Studio 2017 RC 文档。本文描述了 Visual C++ 中的 C++11/14/17 功能。 本文内容 C++11 功能列表 C++11 核心语言功能...转载 2018-10-11 13:55:52 · 1307 阅读 · 0 评论 -
VS2010对C++11的支持程度
#include <cassert>#include <cctype>#include <cerrno>// #include <cfenv> // 不支持#include <cfloat>// #include <cinttypes> // 不支持#include <cstdint>#include转载 2018-10-11 13:56:55 · 4784 阅读 · 0 评论 -
MSVC中C++ UTF8中文编码处理探究
字符编码的问题,上大学那会儿就遇到过,一直都是云里雾里,没太搞清楚。最近又遇到了问题,想在C++的控制台上输出Utf-8编码的汉字字节流。尝试了好多次都是乱码,后来花了些时间查查资料,又和同事交流了一下,算是把C++上对于UTF8编码的处理大概摸清楚了。 字符集 先说一个名词:字符集,没听过的先百度一下,其实就是一种将字符编码的格式,像我们常说的ASCII,UTF8,GBK都是常用的字...转载 2019-01-16 10:09:08 · 1512 阅读 · 1 评论 -
bind原理图释
(原文:http://blog.think-async.com/2010/04/bind-illustrated.html)本文解释了bind 是如何工作的。为了清晰,我对图中的语法作了一些简化(例如,省略函数调用操作符的参数类型),并且简化了 bind 的实现.1. bind 可以用来将用户提供的需要一个参数的函数转换成不需要参数的函数对象。绑定的值(在这个例子中是123)存储在函数对象...转载 2019-02-26 09:00:18 · 465 阅读 · 0 评论 -
C++11 中的std::function和std::bind
1. 可调用对象可调用对象有一下几种定义:是一个函数指针,参考 C++ 函数指针和函数类型; 是一个具有operator()成员函数的类的对象; 可被转换成函数指针的类对象; 一个类成员函数指针;C++中可调用对象的虽然都有一个比较统一的操作形式,但是定义方法五花八门,这样就导致使用统一的方式保存可调用对象或者传递可调用对象时,会十分繁琐。C++11中提供了std::functio...转载 2019-02-26 09:04:34 · 264 阅读 · 0 评论 -
Visual Studio UTF-8 无 BOM 一站式解决办法
一:解决自己源码的编码格式方法A(推荐):工具->扩展和更新->联机->搜索 forceutf8 选择No BOM 的那一个。在你保存文件的时候,这个插件会将文件自动保存为UFT8 无 BOM。方案B:文件-> 高级保存选项->选择 UFT-8 无签名(下拉框最下面倒数几个), 这种方案需要手动对每一个文件处理。二:设定编译器 在编译 链接 时...转载 2019-04-08 10:13:07 · 7317 阅读 · 6 评论 -
用Crt系列函数分析windows程序的内存泄露
近几日分析了windows版本的一个内存泄露故障,之前之后补了下功课,记录如下,抽时间分了近10次才补充完整,可能不太连贯,只是对所用知识的一个提示,欲知详情还是msdn等来的实在。 本文用到的几个很重要的对内存分配相关的结构定义:[cpp] view plain copytypedef struct _CrtMemState转载 2017-05-22 15:03:51 · 661 阅读 · 0 评论 -
R6034错误,C Runtime Error
这是我转的一篇非常全的帖子 能查到的解决方法都在里面有提及: 我是使用 stdafx.h加入这句code #pragma comment(linker, "\"/manifestdependency:type='Win32' name='Microsoft.VC80.CRT' version='8.0.50608.0' processorArchitecture='X86'转载 2017-02-04 16:20:11 · 754 阅读 · 0 评论 -
用CHttpFile实现简单的GET/POST数据
一、GET 数据,下载网页,文件等,用于可下载的文件,不能用于服务端运行的程序,比如.aspx文件等,否则会返回500错误。 CString strSentence, strWriteName="1.htm"; CString strFileName="http://localhost/InDesign/" + strWriteName; CInternetSession s转载 2009-01-21 10:15:00 · 773 阅读 · 0 评论 -
使用CInternetSession封装多线程http文件下载
如何下载一个http文件?我们当然可以用socket自己实现http协议去做,但费时费力还易出bug,对于一个客户端程序稳定易维护是第一位的,所幸MS给我们提供了功能强大的internet API函数族,MFC的CInternetSession对它们进行了一些简单的封装,但如此简单的封装对我等拿来主义者来说只是个半成品。必须经过再加工才能食用。先来介绍一下CInternetSession的使用:下转载 2009-01-21 10:26:00 · 1042 阅读 · 1 评论 -
error LNK2005: _DllMain@12 already defined in xxx 的应对
error LNK2005: _DllMain@12 already defined in MSVC方案一、编程中经常能遇到LNK2005错误——重复定义错误,其实LNK2005错误并不是一个很难解决的错误。弄清楚它形成的原因,就可以轻松解决它了。 造成LNK2005错误主要有以下几种情况: 1.重复定义全局变量。可能存在两种情况: A、对于一些初学编程的程序员,有时候会以为转载 2009-01-22 17:06:00 · 2248 阅读 · 0 评论 -
BitBlt()双缓冲解决图象闪烁
显示图形如何避免闪烁,如何提高显示效率是问得比较多的问题。而且多数人认为MFC的绘图函数效率很低,总是想寻求其它的解决方案。MFC的绘图效率的确不高但也不差,而且它的绘图函数使用非常简单,只要使用方法得当,再加上一些技巧,用MFC可以得到效率很高的绘图程序。我想就我长期(呵呵当然也只有2年多)使用MFC绘图的经验谈谈我的一些观点。1、显示的图形为什么会闪烁? 我们的绘图过程大多放在OnDraw转载 2008-12-19 09:59:00 · 973 阅读 · 0 评论 -
VC++实现位图显示透明效果
我们在进行程序的界面设计时,常常希望将位图的关键部分,也既是图像的前景显示在界面上,而将位图的背景隐藏起来,将位图与界面很自然的融合在一起,本文介绍了透明位图的制作知识,并将透明位图在一个对话框中显示了出来。本文所使用的原始位图及程序编译运行后的界面效果如下图所示:图一、原始位图图二、对话框界面上透明显示位图 一、实现方法 绘制"透明"位图是指绘制某一位图中除指定颜色外转载 2008-12-19 10:19:00 · 1291 阅读 · 0 评论 -
VC多线程编程(转)
VC中多线程使用比较广泛而且实用,在网上看到的教程.感觉写的挺好. 一、问题的提出编写一个耗时的单线程程序: 新建一个基于对话框的应用程序SingleThread,在主对话框IDD_SINGLETHREAD_DIALOG添加一个按钮,ID为IDC_SLEEP_SIX_SECOND,标题为“延时6秒”,添加按钮的响应函数,代码如下: void CSingleThreadDlg:转载 2008-12-23 09:48:00 · 458 阅读 · 0 评论 -
vc多线程的一个程序
#include #include DWORD WINAPI Fun1Proc(LPVOID lpParameter); //声明线程函数1 int tickets=100; //初始化车票的数量 HANDLE hMutex; //定义线程互斥对象 void main() { HANDLE hThread1; //定义线程hThread1 hThread1=CreateThread(NULL,0,转载 2008-12-23 09:51:00 · 449 阅读 · 0 评论 -
VC——线程同步
什么是同步:“同步”不是指平常所说的两件事情同时进行。它的目的是使多个线程之间协调工作,而且常常是避免两个线程同时进行某些操作,比如同时访问同一个共享资源。一般来说,同步是通过暂时将会发生冲突操作的某个线程暂停执行(称为阻塞线程),然后等待不会冲突时再继续执行。 需要同步的情况:1、多个线程同时访问同一对象时MFC对象在对象级不是线程安全的,只有在类级才是。如:两个线程可以安全转载 2008-12-23 09:47:00 · 1297 阅读 · 1 评论 -
反汇编代码分析--函数调用
C++反汇编代码分析--函数调用代码如下:#include "stdlib.h"int sum(int a,int b,int m,int n){ return a+b;}void main(){ int result = sum(1,2,3,4); system("pause");} 有四个参数的sum函数,接着在main方法中调用sum函数。在debug环境下,单步调试如下:11: void main()12: {00401060 push ebp;保存ebp,执行这句之前,转载 2010-12-01 14:16:00 · 7108 阅读 · 2 评论 -
C++基础:Debug与Release版本的区别
说到这个问题,先得说说VC对Debug和Release的定义。 实际上,Debug和Release只是VC对编译选项的预定义而已,如果我们愿意,我们完全可以把Debug和Release的行为完全颠倒过来。 当然,我们也可以自己定义一组编译选项,然后命名为ABC,DEF等。当然,在习惯上,我们仍然更愿意使用VC已经定义好的名称。 既然Debug和Release仅仅是编译选项的不同,那么为什么要转载 2008-12-30 11:16:00 · 817 阅读 · 0 评论