[VC] Visual Studio中读写权限冲突

前置场景: 编译没有报错,但是运行提示 内存异常:

情景1: 如下代码运行异常,提示引发了异常:写入权限冲突。*** 是 0xFFFFF.....

    char* str = (char*)malloc(10);
    str[0] = 0x30;

 解决方案:要包含头文件<stdlib.h> 

情景2: 在FileA文件调用FileB文件的函数,但是在FileA中却没有声明该B函数的原型。

这会导致引发读取访问权限冲突。表现为调用后和原函数内的内存地址不一致。

FileB.c
//函数定义,返回指针类型
char* get_string()
{
	char* value = "TEST";
	printf(" value addr=>%p.\n",value); //输出 00007FF7595DA8B0
	return value;
}


FileA.c
   //在没有声明 get_string()下调用,编译没有出错。  
   char* pt_str = get_string();
   printf(" pt_str addr=%p.\n",pt_str );//输出 00000000595DA8B0




可以看出这两个内存是不一样的,虽然低4字节一致,所以引发读取异常。 

解决方案: 在FileA文件头增加 FileB文件的extern函数声明。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值