一个笔误引起的问题

最近在做一个ACTIVEX控件,是基于ATL的,在用IE进行测试时,调用其中的一个接口很容易引起IE崩溃,初步判断是因为内存操作引起的。正确代码如下:

STDMETHODIMP CIECSChart::createTable(BSTR json)
{
	// TODO: Add your implementation code here

	wchar_t* t = (_bstr_t)(json); 

	int n = utf16to8((ushort*)t, NULL, 0);
	<span style="color:#ff0000;">char* buf = new char[n + 1];</span>
	utf16to8(t, buf, n);
	buf[n] = 0;

	mapView.CreateTable(buf);

	::SysFreeString( json );

	return S_OK;
}

引起IE崩溃的原因是上面代码中红色部分被写成了

char* buf = new char(n + 1);

后面再时行内存分配的时候就会引起堆错误。

时间: 2024-10-14 04:11:55

一个笔误引起的问题的相关文章

从一个笔误引起的思考

几天前组内一个同事做技术分享,其中谈到一个问题,如果new出一个对象但是delete的时候,如果写成delete[]效果会如何.其中有同事在实际测试中发现如果是debug版本会抛异常,但是Release会反复执行该对象的析构函数.debug版本拋异常很容易理解,本来这么写就不对的,但是Release版本为什么会不断执行析构函数呢?如果是这样那又会执行多少次才会结束?笔者做了一下简单分析找到了其中原因,在解决这个问题之前我们先看看下面的代码和内存布局: #include "stdafx.h&quo

多了一个“星号”

引用注明>> [作者:张佩][原文:http://blog.csdn.net/blog_index] 国庆假期我看WDK 8.1中的sample项目,遇一极有趣问题,和基本的指针使用有关,特缀文于此.请看下面是WDK8.1 msplot项目中的一段代码(经我简化过),三行而已,作一个减法运算.注释中的例值,其期望结果应是0x10,但意外得到一个溢出后的大值: /* struct _PLOTGPC */ /* { */ /* //... */ /* LPVOID pData; */ /* };

qt之二进制兼容

一.回顾 使用qt2年多了,但是还是觉得很陌生,总是会被qt搞的很紧张,有时候当我自信满满的打开帮助文档,搜索某个已知的类时,由于笔误敲错了一个字母而出现了另外一个类,不过奇怪的是还真有这么一个类,哎!!!我怎么都不知道呢!看来qt的东西还真不是一般的多,随便一个笔误都可能发现新的东西.特别是qt现在已经发布了qt5.7版本,相对于qt4的时代那真是天差地别,就我个人而言,我现在用的是qt5.6.1-1,因为qt5.6版本官方声称维护2年的时间.qt5.6取消了webkit模块,如果需要使用可以

google 分屏 横屏模式 按home键界面错乱故障分析(二) 分屏的启动过程

google 进入分屏后在横屏模式按home键界面错乱(二) 你确定你了解分屏的整个流程? Android 关机对话框概率没有阴影故障分析 android recent key长按事件弹起触发最近列表故障分析 google 分屏 popup无法显示故障分析 分享此文便是对代码GG的支持,也是爱的表达方式,所以让爱来的猛烈些吧. 代码阅读,请到此处http://androidxref.com 查看原生代码 前情回顾: google 分屏 横屏模式 按home键界面错乱故障分析(一) 上一节我们主要

谈谈我对前端组件化中“组件”的理解,顺带写个Vue与React的demo

前言 前端已经过了单兵作战的时代了,现在一个稍微复杂一点的项目都需要几个人协同开发,一个战略级别的APP的话分工会更细,比如携程: 携程app = 机票频道 + 酒店频道 + 旅游频道 + ...... 每个频道有独立的团队去维护这些代码,具体到某一个频道的话有会由数十个不等的页面组成,在各个页面开发过程中,会产生很多重复的功能,比如弹出层提示框,像这种纯粹非业务的UI,便成了我们所谓的UI组件,最初的前端组件也就仅仅指的是UI组件. 而由于移动端的兴起,前端页面的逻辑已经变得很重了,一个页面的

python中defaultdict方法的使用

默认值可以很方便 众所周知,在Python中如果访问字典中不存在的键,会引发KeyError异常(JavaScript中如果对象中不存在某个属性,则返回undefined).但是有时候,字典中的每个键都存在默认值是非常方便的.例如下面的例子: strings = ('puppy', 'kitten', 'puppy', 'puppy', 'weasel', 'puppy', 'kitten', 'puppy') counts = {} for kw in strings: counts[kw]

二叉排序树(B-Tree)-c实现

这个二叉排序树写完了,虽然还有些bug,但还是很高兴的. 主要实现二叉排序树的构建.(*表示稍微重要点) 二叉排序树的打印. 二叉排序树的删除. 代码里的三种情况都测了 顺便附送一个简单的中序遍历,递归. 代码现在还有很多内存泄漏,不想改了,明天或者下周改. 主要遇到的小问题:1.排序树的打印,本想链式结构打印出来,但是控制不好,就换了一种简单的方法. 2.内存malloc和free还有很大问题.tips:为什么一般malloc之后,内存释放后NULL指针,现在有点明白,free 那块mallo

mac版MyEclipse的安装及创建web项目

这两天快被MyEclipse整死了,因为电脑是mac系统的,安装MyEclipse mac破解版时一直是不成功,弄了一天多才行,接着创建web项目HttpServlet在Tomcat发布时总是出现404页面,出现404当然是请求出问题了,但是我试了好多遍,也查了不少资料,路径真的没有问题,那么问题在哪呢?经过不停的折腾 探索才明白是web.xml配置文件的问题. 先说一下MyEclipse mac破解版的安装,我是根据这位大神的博客提供的步骤安装,传送门:http://yangl.net/201

关于Cewu Lu等的《Combining Sketch and Tone for Pencil Drawing Production》一文铅笔画算法的理解和笔录。

相关论文的链接:Combining Sketch and Tone for Pencil Drawing Production 第一次看<Combining Sketch and Tone for Pencil Drawing Production>一文是在两年前,随意看了一下,觉得论文里的公式比较多,以为实现有一定的难度,没有去细究,最近在作者主页上看到有 [code of direction classification] 部分代码,下载后觉得还是有自己实现的可能,下面记录下自己实现过程中