p和"go helloworld,world"存储在内存哪个区域

操作系统---基础题目汇总十二
1、以下关于内存泄漏说法正确的是__
正确答案: C
A、内存泄漏是操作系统内存管理出错导致的问题
B、单线程程序不可能内存泄漏
C、如果一个进程在运行过程中占用的内存无限制上升,那么该进程有内存泄漏
D、只要进程在退出之前释放了所有分配的内存,那么就不会内存泄漏
E、内存泄漏是仅仅出现在C/C++程序的问题,Java程序不会内存泄漏
内存泄漏 就是申请了内存,但没有释放,导致占用内存无限上升。
内存泄露是程序设计的bug,不是操作系统的问题
内存泄露跟线程数无关
内存泄露是进程申请了内存却没有释放。导致占用内存无限上升
进程退出之前释放申请的内存,不代表进程运行过程中没有内存泄露
java是自动管理内存的,但是也会有内存泄露,比如加入HashMap的对象hash值改变了就无法
从HashMap中remove,这就造成了内存泄露
2、在下面的叙述中,正确的是()。
正确答案: D
A、同一进程内的线程可并发执行,不同进程的线程只能串行执行
B、同一进程内的线程只能串行执行,不同进程的线程可并发执行
C、同一进程或不同进程内的线程都只能地串行执行
D、同一进程或不同进程内的线程都可以并发执行
3、进程调度是从()选择一个进程投入运行。
正确答案: A
A、就绪队列
B、等待队列
C、作业后备队列
D、提交队列
4、p和”hello,world”存储在内存哪个区域?
int main()
char *p = "hello,world";
C、堆,只读存储区
D、栈,只读存储区
根据C语言中的特性和定义p是一个局部变量,而C语言中局部变量存在于栈中,“hello wrold”是一个字符串字面常量,因此存储于程序的只读存储区中,p在这里其实只是指向了”hello wrold”在只读存储区中的地址而已。
5、下面有关共享内存,说法不正确的是?
正确答案: D
A、共享内存和使用信号量一样,属于进程间通信的一种方式。
B、使用shmget函数来创建共享内存
C、尽管每个进程都有自己的内存地址,不同的进程可以同时将同一个内存页面映射到自己的地址空间中,从而达到共享内存的目的
D、共享内存提供了同步机制,在第一个进程结束对共享内存的写操作之前,会有自动机制可以阻止第二个进程开始对它进行读取
共享内存并未提供同步机制,当某一个进程对共享内存提供写操作时,并未自动的阻止另一个进程对它进行读取;
共享内存:就是允许多个进程访问同一内存空间,进程间传递和共享数据非常有效
信号量:为了防止多个进程访问共享资源而造成冲突,设置临界区域每次只让一个进程访问,信号量提供了这样一种机制,用来控制对临界区域的访问
6、当一个进程从CPU上退下来时,它的状态应变为()。
正确答案: B
A、静止就绪
B、活动就绪
C、静止睡眠
D、活动睡眠
静止就绪:这个也叫做挂起就绪,是指进程被对换到辅存时的就绪状态,是不能被直接调度的状态,只有当主存中没有活跃就绪态进程,或者是挂起就绪态进程具有更高的优先级,系统将把挂起就绪态进程调回主存并转换为活跃就绪。
活动就绪:进程在主存并且可被调度的状态。
静止睡眠(阻塞):是指进程对换到辅存时的阻塞状态,一旦等待的事件产生便进入静止就绪状态。
活动睡眠(阻塞):是指进程已在主存,一旦等待的事件产生便进入活跃就绪状态。
正在执行的进程由于其时间片用完被暂停执行,此时进程应从执行状态变为活动就绪状态;
处于静止睡眠状态的进程,在进程等待的事件出现后,应变为静止就绪状态;
若进程正处于执行状态时,因终端的请求而暂停下来以便研究其运行情况,这时进程应转变为静止就绪状态;若进程已处于睡眠状态,则此时应转变为静止睡眠状态。
7、下列有可能导致一进程从运行变为就绪的事件是()。
正确答案: D
A、一次I/O操作结束
B、运行进程需作I/O操作
C、运行进程结束
D、出现了比现运行进程优先权更高的进程
A应该是由阻塞太进入就绪态
B应该是由运行态进入阻塞态
C程序运行结束,由运行态进去终止状态
D如果是抢占式系统,有可能从运行态进去就绪态
8、进程的控制信息和描述信息存放在()。
正确答案: B
进程控制块(PCB)是系统为了管理进程设置的一个专门的数据结构。系统用它来记录进程的外部特征,描述进程的运动变化过程。同时,系统可以利用PCB来控制和管理进程,所以说,PCB(进程控制块)是系统感知进程存在的唯一标志。
9、在单处理机系统中,设系统中有n个进程(n&2),且当前处理机没有执行进程调度程序,下列情况哪些可能发生()
正确答案: B C D
A、没有运行的进程,有2个进程处于就绪状态,n进程处于等待状态
B、一个进程处于运行状态,n-1进程处于等待状态
C、一个进程处于运行状态,1个进程处于就绪状态,n-2进程处于等待状态
D、一个进程处于运行状态,n-1进程处于就绪状态,没有进程处于等待状态
A 明显不对 一共 n+2个进程了
n-1个进程被阻塞了,是满足题意的
C 运行的进程唤醒n-1个被阻塞进程中的一个进程
D 运行的进程唤醒n-1个被阻塞进程
没有更多推荐了,C语言指针申明的变量都存储在静态区吗_百度知道
C语言指针申明的变量都存储在静态区吗
int main () {
char *str =&helloworld&;
= 10;}我想问的str为什么就是存储在静态去的。那p存储在内存什么地方的呀。菜鸟希望高手指点下。
我有更好的答案
char *str =&helloworld&;
这个是将&helloworld&的地址,存到了str中。&helloworld&是常量,存储在一个所谓的静态区! str只是存的地址int *p
而这个是将10这个数存储到了p中!
可是指针只能存地址的。怎么会存整型值
地址就是个整形数!你可以通过以下代码看一下:int i=100, *p=&printf( &%p\n&, p );printf( &%d\n&, p );printf( &%p\n&, i );printf( &%d\n&, i );
采纳率:75%
来自团队:
指针来说 他必须有 指针本身 和指针指向的值 在你这里 指针本身就是 str 和p
指针指向的东西就是&helloworld&和10
指针本身在栈区 两个东西在一个特殊的常量区;
如果指针过期 就是遇到了 } 这个东西也不用delete 他会自动消亡 如果是 int *p = new int[3] 这个数组就是在堆区 也是同样道理只不过他必须手动删除了 补充一个 你的这个int *p是错的 p是int *类型 10是int类型 编译要出错 道理没错 但是写错了
为您推荐:
其他类似问题
c语言的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。

我要回帖

更多关于 c hello world 的文章

 

随机推荐