社区
C++ 语言
帖子详情
"Access Violation"是什么问题?
SailorK
2005-03-31 11:29:51
#include<iostream>
#include<string.h>
using namespace std;
struct object
{
char *name;
};
main()
{
object* ptr=new object;
strcpy(ptr->name,"Name");
delete [] ptr->name;
delete ptr;
system("pause");
}
...全文
73901
10
打赏
收藏
"Access Violation"是什么问题?
#include #include using namespace std; struct object { char *name; }; main() { object* ptr=new object; strcpy(ptr->name,"Name"); delete [] ptr->name; delete ptr; system("pause"); }
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
SailorK
2005-04-01
打赏
举报
回复
thanks everyone
dongpy
2005-03-31
打赏
举报
回复
strcpy(ptr->name,"Name");
//ptr->name需要指向可修改的内存,所以要分配空间。
如果不分配,可以让它指向常量数据区:
main()
{
object* ptr=new object;
ptr->name = "Name";
delete ptr;
system("pause");
}
ycom__net
2005-03-31
打赏
举报
回复
当你运行程式得到了一个AV(Access Violation)错误的时候,这意味着你的程式正在试图访问一块
不再有效的内存,请注意我所提到的“不再”有效。大多数的情况下,出现这个错误要么是因为你试图访问一块已经被释放的内存,要么是想使用一个还未创建对象的指针
http://www.51one.net/info/2436856514992574.html 看一下
bulala
2005-03-31
打赏
举报
回复
是啊,没有分配空间。怎么访问?
Vairocana
2005-03-31
打赏
举报
回复
object* ptr = new object;
这里new语句只分配了一个4字节的name字符串指针,即:只定义了一个ptr->name指针变量,但是并未为该指针分配实际所需的内存。就好象定义:
char *p; // 定义了p
strcpy(p, "Name"); // 未分配内存会报错,所以下面的delete [] ptr->name;是无意义的。
解决办法:
object* ptr = new object;
ptr->name = new char[5]; // 加上这一句
strcpy(ptr->name, "Name");
kobefly
2005-03-31
打赏
举报
回复
#include<iostream>
#include<string.h>
using namespace std;
struct object
{
char *name;
};
main()
{
object* ptr=new object;
ptr->name = new char[20];//你这个指针没有分配内存啊,
strcpy(ptr->name,"Name");
delete [] ptr->name;
delete ptr;
system("pause");
}
xjp6688
2005-03-31
打赏
举报
回复
大家都说了
goodluckyxl
2005-03-31
打赏
举报
回复
Access Violation
是越界访问或者无效地址
pcboyxhy
2005-03-31
打赏
举报
回复
构造函数里面最好初始化一下
喜购函数再销毁一下
踏岸寻柳
2005-03-31
打赏
举报
回复
AV多是访问无效内存空间所致。
你的问题比较明显,char *变量尚未开辟空间,就准备赋值,当然出错。
Access
violat
ion
at address 00000000.Read of adress 00000000解决方法
Access
violat
ion
at address 00000000.Read of adress 00000000之类错误的解决方法
Access
violat
ion
at address故障的解决方法 win7图文解决方案
Access
violat
ion
at address故障的解决方法,图文说明,帮您轻松解决^_^
运行程序提示
access
violat
ion
at address的解决方法.docx
运行程序提示
access
violat
ion
at address的解决方法.docx
提示
access
violat
ion
at address解决办法.docx
提示
access
violat
ion
at address解决办法.docx
弹出错误
access
violat
ion
at address 004096da write of address 00401000 解决
Access
Violat
ion
(非法访问),General Protect
ion
Fault(一般保护性错误)或者Invalid Page Fault(无效页面错误),虽然说法不一样,但本质上总是由同一种错误引起的。
Access
Violat
ion
常常在计算机用户运行的程序试图存取未被指定使用的存储区时遇到。
C++ 语言
64,690
社区成员
250,497
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章