C 在scanf()读取后删除指针导致过程终止
C++ delete pointer after scanf() reading results in process termination
您能否向我解释为什么在地球上此代码终止过程?
#include<cstdio>
int main(){
int *wsk = new int[2];
scanf("%d %d", wsk[0], wsk[1]); // relevant line
delete [] wsk;
wsk = new int[10];
return 0;
}
不是:
#include<cstdio>
int main(){
int *wsk = new int[2];
scanf("%d %d", &wsk[0], &wsk[1]); // relevant line, mark the two '&'
delete [] wsk;
wsk = new int[10];
return 0;
}
scanf
取指针。
它必须知道将读取的读数
的地址 。 wsk[0]
和wsk[1]
是一些随机(实际上,未定义)int
s。它们被用作地址,但它们是无效的地址。seg故障。
&wsk[0]
和 &wsk[1]
,或更简单地, wsk
和 wsk+1
是一个有效的地址,其中 scanf
可以编写 int
。
,因为在第一种情况下,您没有将指针传递给SCANF函数。您正在WSK [0]和WSK [1]的 value 中,并将这些值视为指针。
a)两个代码至少在完成时终止。
b)您不会在程序结束之前删除所有预订。
c)您的程序是C和C 的混合。
...
D)SCANF将地址用于变量。&amp;
相关文章:
- 我可以在不使用原始指针的情况下避免在std :: pinitializer_list的Intialization过程中复
- 杀死过程时智能指针的行为
- C 在scanf()读取后删除指针导致过程终止
- 通过共享内存IPC在过程之间共享指针
- 指针的C 内存分配过程
- 将数组/指针传递到库中的过程时发生编译错误
- 在类构造函数中将此指针传递给CreateThread在线程过程中的行为很奇怪
- 调用指向windows过程中C函数的函数的成员指针会导致应用程序崩溃
- 带有指向数组的指针的过程重新分配
- Windows 消息过程的函数指针数组
- 指向Delphi中C++typedef回调过程的指针
- visual String使用c++中的指针进行复制,在复制过程中程序崩溃
- 我能逆转数组到指针衰减的过程吗?
- 通过构造过程中获得的指针修改const对象
- 在对话框消息过程中获取应用对象指针
- 静态指针不会在子类化窗口过程中初始化?
- c++传递给静态函数的指针会在执行过程中改变值
- Turbo C++和GCC编译器在指针递增过程中产生不同的结果
- 请解释这个查找最大指针的过程有什么问题
- 为什么指针在函数转换过程中会自行更改