strcpy_s函数的使用

e4211asd 2015-07-24 12:13:19
#include<iostream>
using namespace std;
int main() {
char * str = new char[20];
const char* str1 = new char[20];
str1 = "hello world";
str = "hello cpp";
cout << str << endl;
cout << str1 << endl;
// str = str1; 这样不能赋值,不能从const char* 转换到char *
strcpy_s(str,20 ,str1);
cout << str << endl;
cout << str1 << endl;
getchar();
return 0;
}
想问一下 这个程序不报错,但是运行的时候会 出现错误
0x0050234F (ucrtbased.dll) (Project2.exe 中)处有未经处理的异常: 0xC0000005: 写入位置 0x00838B40 时发生访问冲突。
麻烦帮忙详细的解释一下。本人新手。求高手开路
...全文
734 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
KT永恒国度 2015-09-08
  • 打赏
  • 举报
回复
还有就是申请内存后最好 memset一下
KT永恒国度 2015-09-08
  • 打赏
  • 举报
回复
引用 1 楼 ksrsoft 的回复:
	delete str;
	delete str1;
是不是应该用delete []?
KT永恒国度 2015-09-08
  • 打赏
  • 举报
回复
要不首先获取str1的长度 int len=strlen(str1); strcpy_s(str,len,str1); 最后删除if(str1) delete[] str1lstr1=NULL;......
二班的码农 2015-07-24
  • 打赏
  • 举报
回复
上面有句代码有误 将 delete str; 改成 delete[] str;
二班的码农 2015-07-24
  • 打赏
  • 举报
回复
指针非法修改常量值问题 char * str = new char[20]; const char* str1 = new char[20]; str1 = "hello world"; str = "hello cpp"; 楼主本想把常量字符串赋给str和str1变量,可是这两个变量是指针,这四句代码的解释如下: 前两句给str和str1开辟内存空间,后两句将str和str1指针分别指向字符串常量,导致之前的分配的内存被放弃了(并没有释放),str和str1现在指向的内存空间实际上是两个字符常量的空间,当strcpy_s(str,20 ,str1)执行时,strcpy_s想将str1的内容复制到str中,由于字符串常量的值是不能修改的,所以就会报错 可将 str1 = "hello world"; str = "hello cpp"; 改成 strcpy_s(str,20 ,"hello cpp"); strcpy_s(str1,20 ,"hello world"); 并记得在用完str1和str的时候调用 delete[] str1; delete str; 来释放内存空间 楼主如果不想这么麻烦的话,可将 char * str = new char[20]; const char* str1 = new char[20]; str1 = "hello world"; str = "hello cpp"; 改成 char str[20] = "hello cpp"; char str1[20] = "hello world"; 即可
e4211asd 2015-07-24
  • 打赏
  • 举报
回复
您好,我是新手,没看懂这个回复。 您的意思是 我在return 0;前面把 delete str和str1就可以了吗。 根据异常提示。我觉得是我的这个函数参数写错了,但是又不知道错在哪,请指点迷津。 strcpy_s(str,20 ,str1);
缘中人 2015-07-24
  • 打赏
  • 举报
回复
	delete str;
	delete str1;

13,870

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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