首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

如何样的溢出才能使UNIX的CPU达到100%

2012-02-10 
怎么样的溢出才能使UNIX的CPU达到100%C/C++ code#include stdio.htypedef struct a{int t}Atypedef st

怎么样的溢出才能使UNIX的CPU达到100%

C/C++ code
#include "stdio.h"typedef struct a{    int t;}A;typedef struct b{    A abc[10];}B;int test(B *p){    for (int i=0;i<16;++i)    {        p->abc[i].t=i;    }        return 0;}void show(){    B myb;    test(&myb);    for (int i=0;i<16;++i)    {        printf("%d\n",myb.abc[i].t);    }}int main(){    show();    printf("test!\n");    while(1)        {        printf("waiting\n");    }    return 0;}

上面是我的测试code,毫无疑问,我对结构体变量的操作超出的它的定义范围.
WINDOWS环境会在show执行完报错,完全打印不出test!
但是我在UNIX上面测试,不但可以打印出test!还能继续后面的循环。
这里做个死循环是为了看内存和CPU使用情况,ps了一下,CPU基本在8%左右浮动。
最近为了查server hang费了很多心,很想知道UNIX到底什么情况才能使得CPU使用率在99%以上。
先谢过。

[解决办法]
写个
while(1);
试试
[解决办法]
内存越界不是必然会导致运行失败,行为是不确定的
可能运气好
[解决办法]
探讨

引用:
写个
while(1);
试试

恩。这个确实可以达到目的。
不过程序一般都有在循环里面做点什么的。
其实我还是想知道有没有什么对内存使用上出现的问题导致CPU 99%+
比如溢出,然后用到脏内存,没有释放,等等等连锁反应。

[解决办法]
while(1)
{
printf("waiting\n");
}
printf是要往屏幕输出的,耗得是IO,CPU不怎么耗。

[解决办法]
这个比较困难
你用小程序来模拟,更困难,很难重现,运行环境毕竟不同

感觉还是从程序日志入手,查看直接表现,查找直接原因
[解决办法]
用gdb单步或设断点调试
[解决办法]
呵呵,内存越界的表现就是千奇百怪的
不会固定在同一个地方出错

对代码进行静态检查,也许能发现一点问题
工具PC-Lint
[解决办法]
只要让CPU一直做复杂的运算就可以达到99%了(如果是多个CPU),你就多开几个进程一起做。

很容易就可以让CPU达到99%。

楼主,估计你还是得调式自己的代码了。
[解决办法]
申请内存,不释放,程序久了肯定CPU上去.
[解决办法]
探讨

引用:
while(1)
{
printf("waiting\n");
}
printf是要往屏幕输出的,耗得是IO,CPU不怎么耗。

恩。确实,只是单纯的IO高,除了申请内存,还有啥方法能单纯的让CPU高,而内存不高么?
我只是想模拟出这种case,也好看看我们的程序是不是这个问题。

[解决办法]
探讨

引用:
用gdb单步或设断点调试

程序巨庞大,6层架构,上百万行代码。。会死人的。

所以我现在能做的就是先从应用数据传入来定位,
看看是不是某比数据在源头处定义就超出了以前程序的定义范围。
但是当我找到某个数据溢出的时候,我发现就算模拟这个问题消息,
也不能使得CPU99%+,不能模拟问题,就不能说明找到了问题的根源。
虽然确实有溢……

[解决办法]
只不过你的代码正好让windows崩了,show稍微改改就能不蹦。
C/C++ code
void show(){    int arr[1000]={0};    B myb;    test(&myb);    for (int i=0;i<16;++i)    {        printf("%d%d\n",myb.abc[i].t);    }    cout<<arr[0]; // 使用下arr,确保release下,编译器不会觉得arr没用过,直接优化掉了}
[解决办法]
楼主不必纠结吧,至少我重新运行你的代码,直接Segmentation fault了。
那就说明,这种内存越界结果是未定义的。

[解决办法]
CPU100% 估计是死循环了,跟内存没多大关系

热点排行