【发布时间】:2014-03-16 14:41:09
【问题描述】:
这个小代码导致运行时错误“访问冲突”。 我在网上读到它说当指针指向 NULL 时,它的值不能改变。 但这并没有解决问题。
#include<iostream>
using namespace std;
int max=3;
struct node
{
char *ptr;
}*start, *current = start;
void init()
{
current->ptr = (char*)malloc(max*sizeof(char)); //ERROR IN THIS LINE.
}
void add(char page)
{
char *c;
c = current->ptr;
if (page == *c)
cout << "Yes";
else
cout << "No";
}
void main()
{
init();
add('a');
cin >> max;
}
【问题讨论】:
-
您需要使指针指向可以写入的内容。目前,出于所有意图和目的,它们指向随机位置。
-
@juanchopanza 当我让指针指向一个动态分配的空间时,它不会指向那个位置的垃圾值吗?
-
不,它将指向您可以写入的动态分配的内存段。
标签: c++ pointers error-handling runtime access-violation