linux shell脚本,求任意10个数的最大值。(使用数组)?
0,1,1,2,3,4,8,13那个应当是5吧。========#!/bin/sha=0b=1echo-n$a,$bfor((i=0;i<8;i++))doc=$((a+b))a=$bb=$cecho-n,$cdoneecho将上面保存成fibonacci.sh。
然后在命令行输入chmodu+x./fibonacci.sh最后再运行./fibonacci.sh即可以得到结果:0,1,,1,2,3,5,8,13,21,34
是否存在数组越界非法访问等情况,这个怎么解决?
1:一般都是非法内存操作,例如数组越界,例如申请a[5],却访问到a[5]或者a[6],这也会有很多情况,可能是循环操作时循环变量控制有问题,可能是字符串拷贝时长度发生溢出;
2:指针指向了非法内存,例如申明一个指针,但是没有对指针进行初始化,直接就引用,或者引用里面的元素或者函数,或者没有分配内存就进行释放等,另外,申请内存还要检查是否申请成功,如果没有申请成功也会出现这种情况;
3:单步调试或者加打印信息,细心一点总可以找到错误的,注意编译成调试版本;
4:如果是linux,可以产生core文件,从core文件查看出错的地方。
linux怎么管理空闲内存?
内存组织层次:页式管理—>(numa)—>node的zonelist—>32位DMA/NORMAL/HIGHMEM三个区,64位没有高端内存—>伙伴分配系统—>slab/slub/slob2.创建进程时内存分配:实际上只分配task_struct和thread_info的内存,而且很可能是从slab缓存中分配的,当进程运行时由于缺页中断,才由内核层具体分配物理内存并与vm挂接3.malloc是c runtime中的实现,是上层库的内存分配层,至于内核层的,可以看看__alloc_pages/alloc_pages/kmalloc(小内存直接slab,大内存还是alloc_pages)/vmalloc(alloc_page分配不连续的物理页,映射到连续的vm_struct中的pages指针数组)/vmap/map_vm_area等几个函数
还没有评论,来说两句吧...