一个关于内存拷贝的问题

howmarvin 2011-09-24 03:59:12
编写一个内存拷贝函数如下

template<class T>
bool copyFunction(T* dest,T* src,int size)
{

if (dest<=src||dest>=(src+size)) //dest地址为0x00137870
{
while(size--) //src地址为0x00137868 循环第一次就报错
*dest++=*src++;

return true;
}
else
{
dest+=size-1;
src+=size-1;
while(size--)
*dest--=*src--;

return true;
}

return false;
}

main:

char* t1="bbcdef";
char* t2="aooaoo";

if(copyFunction(t1,t2,strlen(t2)))
printf("%s",t1);


vs2008中运行报错,
dest地址是0x00137870
src地址是 0x00137868

错误提示为:unctions.exe 中的 0x00fc1834 处未处理的异常: 0xC0000005: 写入位置 0x00fc7870 时发生访问冲突

请教这是神马回事?



...全文
70 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
howmarvin 2011-09-25
  • 打赏
  • 举报
回复
分不多,谢谢各位了
柯本 2011-09-24
  • 打赏
  • 举报
回复
基本的概念问题
char *t="aaa"; 会指向只读空间,不能写入
所以t1要用楼上所说
char t1[足够的长度];
t2就无所谓了
crjwlaq 2011-09-24
  • 打赏
  • 举报
回复
字符常量 和 字符数组 是不太一样的
vilnies 2011-09-24
  • 打赏
  • 举报
回复
t1是常量"bbcdef"的地址,不可写。
hongwenjun 2011-09-24
  • 打赏
  • 举报
回复
http://topic.csdn.net/u/20110831/18/07df11c3-817f-4163-b092-e8fc04d34137.html

发个简单的代码,因为很多人 分不清char c[] 和 char *c
hongwenjun 2011-09-24
  • 打赏
  • 举报
回复
char* t1 = "bbcdef";
char* t2 = "aooaoo";
没有分配空间

char t1[] = "bbcdef";
char t2[] = "aooaoo";
试一下

64,645

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧