内存访问违规和Windows

时间:2017-11-11 03:58:02

标签: c memory sigsegv

所以我正在进行下面的练习,我理解与解除引用空指针有关的问题,如下面的代码所示。 Swap.c

int main () {
int a = 1, b = 2;
swap(&a, &b);
}

void swap (int *px, int *py) {
int *temp;
*temp = *px; //Crashes here
*px = *py;
*py = *temp;
}

现在我的问题在我的电脑上我总是得到sigsegv如果proc存在与否。我认为这是Windows不允许违反内存访问。这使得无法真正进行下面的练习。这在本机Linux机器上的表现是否不同?建议?

(练习)创建swap.c 提供要在main中调用的C过程proc的定义 程序紧接在调用buggy swap(swap2.s)之前 将保证当未初始化的临时指针是时,交换将崩溃 dereferenced(它应该导致* temp崩溃)。也解释为什么你的 电话保证这次崩溃。提示:你的proc程序将离开 堆栈上的东西。

int main () {
int a = 1, b = 2;
proc(/* Some args might go here */);
swap(&a, &b);
}

Q2。解释你如何保证它与proc中的内容崩溃。

但是当它总是在deref崩溃时这很棘手。?

0 个答案:

没有答案