
VC++
lcfeng1982
没有解决不了的难题,只是方法和时间的问题!
展开
-
CRT detected that the application wrote to memory after end of heap buffer
heap corruption原创 2022-11-05 11:22:21 · 1724 阅读 · 5 评论 -
不是有效的win32应用程序
一、现象VS2015编译的动态库(比如parse.dll),在win10上可以正常使用,在Win7或XP上使用的时候,LoadLibrary()失败,GetLastError返回193,指的是“不是有效的win32应用程序”。二、解决思路这种错误一般是由于缺少依赖库导致的,用依赖库查看工具,查看parse.dll的依赖库,并添加到parse.dll所在目录。三、解决步骤1.查看parse...原创 2019-07-26 17:20:09 · 1815 阅读 · 0 评论 -
常见VC异常
1、warning C4273: dll链接不一致首先,警告“warning C4273: dll链接不一致”的产生是由于dll导入导出(__declspec(dllexport)、__declspec(dllimport))的设置问题!需要在dll外部调用的变量和函数必须以__declspec(dllimport)方式在调用程序中使用,而在该dll内部必须是以__declspec(dll原创 2013-08-14 11:05:21 · 1304 阅读 · 0 评论 -
C/C++跨模块释放内存
在linux下跑得一直很好的程序,到了windows下面就跑不起来了。内存异常,检查了一下,很快发现是因为在主程序中释放了一块在DLL中分配的内存,这种问题虽然早就知道了,但是一直没有仔细考虑过,所以今天就深入研究了一下。转载 2017-10-13 11:08:13 · 1905 阅读 · 1 评论 -
LoadLibrary返回NULL,GetLastError返回998
在使用LoadLibrary装载某个dll的时候返回NULL,然后调用GetLastError返回998,意思是说“内存位置访问无效。”,问题很奇怪,因为前一段时间还能正确加载,网上搜索也是说什么的都有,最后调查发现是由于LoadLibrary是在应用程序全局变量初始化的时候调用的,如果LoadLibrary放到应用程序初始化完成后就不会出现这个问题,看样子这个动态库不能装载过早,可能是由于其他前原创 2015-01-20 16:44:35 · 8807 阅读 · 0 评论 -
函数调用约定
错用调用约定原创 2016-05-10 16:35:35 · 553 阅读 · 0 评论 -
c++关于越界访问(内存溢出)
越界访问指访问了不是程序申请的内存区域原创 2014-11-13 09:26:42 · 8129 阅读 · 0 评论 -
fatal error C1010: 在查找预编译头时遇到意外的文件结尾。是否忘记了向源中添加“#include "stdafx.h
错误描述:fatal error C1010:在查找预编译头时遇到意外的文件结尾。是否忘记了向源中添加“#include"stdafx.h"”?错误分析: 此错误发生的原因是编译器在寻找预编译指示头文件(默认#include"stdafx.h")时,文件未预期结束。没有找到预编译指示信息的头文件"stdafx.h"。 (因为工程中的每个cpp文件属性默认都是使用预编译转载 2013-07-26 10:24:13 · 833 阅读 · 0 评论 -
c++ “&”运算符和“+”运算符优先级
很多人可能都认为“&”运算符比“+”运算符优先级高,其实不然,如下所示: byte one = 0x04; one = one & 0x70 + 1;one的值为0,而不是1。这是因为“+”的优先级比“&”高,所以0x70先加1,变成0x71,然后one再与0x71进行与操作,结果为0。这是很容易引起错误的地方,因为很多程序员想要达到的目的是one与0x70与运算后再加原创 2014-02-28 13:30:33 · 2718 阅读 · 0 评论 -
C++打印出当前源文件的文件名以及源文件的当前行号
如何打印出当前源文件的文件名以及源文件的当前行号?参考答案: 通常使用的就是__FILE__, __LINE__,在调试函数中利用”%s”,”%ld”,打印就好了。原创 2014-02-25 16:43:51 · 4649 阅读 · 0 评论 -
C/C++运行时库
一、运行时库程序运行时不可缺少的库就是运行时库(或者叫运行期库,英文名称run-time library),通常以静态库或者动态库的形式呈现。比如C运行时库( C run-time library ),如果C语言编写的可执行程序没有包含C运行时库,该程序的main函数就不会被调用,从而程序无法运行。 C++ 世界里,有另外一个概念:Standard C++ Library,它包括了上面原创 2014-01-18 09:19:16 · 3767 阅读 · 0 评论 -
命令行下使用VC++自带的nmake编译器编译项目
步骤如下1、打开命令行(开始-》运行-》cmd,回车)2、在命令行设置include路径: set INCLUDE=D:\Program Files\Microsoft Visual Studio 9.0\VC\include;D:\Program Files\Microsoft Visual Studio 9.0\VC\atlmfc\include;C:\Program Fil原创 2013-11-13 16:39:58 · 3260 阅读 · 0 评论 -
c++虚函数表解析
对C++ 了解的人都应该知道虚函数(Virtual Function)是通过一张虚函数表(Virtual Table)来实现的。简称为V-Table。在这个表中,主是要一个类的虚函数的地址表,这张表解决了继承、覆盖的问题,保证其容真实反应实际的函数。这样,在有虚函数的类的实例中这个表被分配在了这个实例的内存中,所以,当我们用父类的指针来操作一个子类的时候,这张虚函数表就显得由为重要了,它就像一原创 2013-09-22 20:21:28 · 638 阅读 · 0 评论