代码片断如下:
#include <stdio.h>
#include <stdlib.h>
#include <memory.h>using namespace std;int _tmain()
{
char* p = new char;
char* p1 = "1234567890";
memcpy(p, p1, 9);
delete[] p; (1)
p = NULL;
return 1;}上述代码在windows mobile professional 6下编译,
运行到(1)处出现内存非法访问异常
原因从表面上看是因为对p只分配了1个字节的内存,
却往里面拷贝了9个字节而造成了异常,但是改为
memcpy(p, p1, 8)后,运行成功但是在VC下编译该代码,memcpy拷贝的字节长度大于目标缓存的大小时,则立刻发生异常上述情况是何原因,为何在windows mobile上在某些情况下允许memcpy拷贝的字节数比目标缓存大而不异常
#include <stdio.h>
#include <stdlib.h>
#include <memory.h>using namespace std;int _tmain()
{
char* p = new char;
char* p1 = "1234567890";
memcpy(p, p1, 9);
delete[] p; (1)
p = NULL;
return 1;}上述代码在windows mobile professional 6下编译,
运行到(1)处出现内存非法访问异常
原因从表面上看是因为对p只分配了1个字节的内存,
却往里面拷贝了9个字节而造成了异常,但是改为
memcpy(p, p1, 8)后,运行成功但是在VC下编译该代码,memcpy拷贝的字节长度大于目标缓存的大小时,则立刻发生异常上述情况是何原因,为何在windows mobile上在某些情况下允许memcpy拷贝的字节数比目标缓存大而不异常
解决方案 »
- 求TCP-IP详解卷
- 用 CFontDialog 设置中文字体后 如何获得 大小 属性中 "几号" 这两个中文字?
- ******下载的Platform SDK如何在VC6.0中使用?。需要进行配置吗?在线等待*****
- 如何控制windows media player?
- 如何在指定坐标处显示模式对话框?如何快速产生指定范围的乱序数组?
- 紧急呼救!!!!!installshield6.22中把删除程序快捷方式的代码应当放到什么事件中??
- 深入浅出MFC(第二版)!
- vc有没有显示jpg文件的控件,要求装入的jpg可自适应该控件的大小,请给介绍一下?
- 苹果梨的故事!
- Word and VC++
- 我的VS2008不能创建项目
- 送分100分:非常简单的问题。
请看清楚我问的是什么,谢谢!
我只是想弄清楚以下在windows mobile上是如何分配内存的,与在pc上有什么不同
希望达人指点迷津,谢谢!