第二次作业
一观看视频笔记
二 练习的代码
三 pta和视频问题
1 没看懂Ctrl c crtl z 含义,和所讲的EOF,没听懂讲的是啥.
2定义的int **p是错误表达吧
3pta 选择题第四个 指针变量中保存的不一定是一个地址 感觉有点对的样子,搜索出的答案讲的不咋明白,也没看懂。
四 问题
为啥使用未初始化的指针会错误?
统会给指针分配个随机地址,示例如下:
int *p; //或者 int *p = NULL;
*p = 10; //错误,指针未初始化
上述程序将值10写到未知的内存位置,如果p指向系统内存空间,这样很可能把系统本来地址里的内容给覆盖了,会导致程序或者系统的崩溃。
没释放内存有影响?
在堆中开辟内存以后,使用完成必须释放内存,否则会造成内存泄漏,示例如下:
int *p = (int *)malloc(100);
···
free(p);
p = NULL;没看懂解释,大概知道必须释放指针才能正确应用malloc是一个函数
malloc的全称是memory allocation,中文叫动态内存分配,用于申请一块连续的指定大小的内存块区域以void*类型返回分配的内存区域地址
,当无法知道内存具体位置的时候,想要绑定真正的内存空间,就需要用到动态的分配内存,且分配的大小就是程序要求的大小。