错误求救
时间:2010-08-01
来源:互联网
本帖最后由 blackgenius 于 2010-08-01 02:06 编辑
自己写一个程序来纯粹为了学习一些函数的使用,结果错误的很奇怪,请论坛里的长老们解解急,看看我的程序为什么错误,要如何改~谢过各位,在线等~
复制代码
我运行./a.out 10 5 2得到这么一串提示
*** glibc detected *** ./a.out: double free or corruption (top): 0x09dcf008 ***
======= Backtrace: =========
/lib/libc.so.6[0xa655a5]
/lib/libc.so.6(cfree+0x59)[0xa659e9]
/lib/libc.so.6(fclose+0x136)[0xa53c96]
./a.out[0x8048995]
./a.out[0x8048653]
/lib/libc.so.6(__libc_start_main+0xdc)[0xa11e9c]
./a.out[0x8048511]
======= Memory map: ========
009dd000-009f8000 r-xp 00000000 fd:00 163874 /lib/ld-2.5.so
009f8000-009f9000 r-xp 0001a000 fd:00 163874 /lib/ld-2.5.so
009f9000-009fa000 rwxp 0001b000 fd:00 163874 /lib/ld-2.5.so
009fc000-00b4e000 r-xp 00000000 fd:00 163908 /lib/libc-2.5.so
00b4e000-00b50000 r-xp 00152000 fd:00 163908 /lib/libc-2.5.so
00b50000-00b51000 rwxp 00154000 fd:00 163908 /lib/libc-2.5.so
00b51000-00b54000 rwxp 00b51000 00:00 0
00bd0000-00bd1000 r-xp 00bd0000 00:00 0 [vdso]
065a1000-065ac000 r-xp 00000000 fd:00 163933 /lib/libgcc_s-4.1.2-20080825.so.1
065ac000-065ad000 rwxp 0000a000 fd:00 163933 /lib/libgcc_s-4.1.2-20080825.so.1
08048000-08049000 r-xp 00000000 fd:00 393296 /home/ArmyAnt/src/a.out
08049000-0804a000 rw-p 00000000 fd:00 393296 /home/ArmyAnt/src/a.out
09dcf000-09df0000 rw-p 09dcf000 00:00 0 [heap]
b7fb8000-b7fba000 rw-p b7fb8000 00:00 0
bf938000-bf94d000 rw-p bffea000 00:00 0 [stack]
已放弃
自己写一个程序来纯粹为了学习一些函数的使用,结果错误的很奇怪,请论坛里的长老们解解急,看看我的程序为什么错误,要如何改~谢过各位,在线等~
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
-
- int eva_rand(int, int, int);
-
- int main(int argc, char* argv[])
- {
- int arg1, arg2, arg3;
-
- if(argc != 4){
- printf("请输入3个参数,第一个是要产生的随机数个数,第二个是正数个数,第三个是要产生的数的位数。\n");
- exit(1);
- }
- arg1 = atoi(argv[1]);
- arg2 = atoi(argv[2]);
- arg3 = atoi(argv[3]);
-
- eva_rand(arg1, arg2, arg3);
- return 0;
- }
-
- int eva_rand(int i, int j, int k) {
-
- int tnb, pnb;
- long rdi, rdf;
- char crdi[200];
- char crdf[200];
- char ngc[200];
- FILE *fp;
- size_t len;
-
- tnb = 0;
- pnb = 0;
- bnb = 0;
-
- sprintf(ngc, "-");
-
- fp = fopen("/tmp/data","w");
-
- for (; tnb < i && pnb < j; tnb++, pnb++){
- srand(time());
- rdi = rand();
- rdf = rand();
- sprintf(crdi, "%ld", rdi);
- sprintf(crdf, "%ld", rdf);
- len = strlen(crdi);
- if ( len < k){
- continue;
- }
- crdi[k] = '\0';
- crdf[3] = '\0';
- crdf[2] = crdf[1];
- crdf[1] = crdf[0];
- crdf[0] = '.';
- strcat(crdi, crdf);
- fprintf(fp, "%s ", crdi);
- if (!(tnb%5)) {
- fprintf(fp, "\n");
- }
- }
- for (pnb=0 ; tnb < i && pnb < i - j; tnb++, pnb++) {
- srand(time);
- rdi = rand();
- rdf = rand();
- sprintf(crdi, "%ld", rdi);
- sprintf(crdf, "%ld", rdf);
- len = strlen(crdi);
- if ( len < k){
- continue;
- }
- crdi[k] = '\0';
- crdf[3] = '\0';
- crdf[2] = crdf[1];
- crdf[1] = crdf[0];
- crdf[0] = '.';
- strcat(crdi, crdf);
- strcat(ngc, crdi);
- fprintf(fp, "%s ", ngc);
- if (!(tnb%5)) {
- fprintf(fp, "\n");
- }
- }
- fclose(fp);
- return 0;
- }
*** glibc detected *** ./a.out: double free or corruption (top): 0x09dcf008 ***
======= Backtrace: =========
/lib/libc.so.6[0xa655a5]
/lib/libc.so.6(cfree+0x59)[0xa659e9]
/lib/libc.so.6(fclose+0x136)[0xa53c96]
./a.out[0x8048995]
./a.out[0x8048653]
/lib/libc.so.6(__libc_start_main+0xdc)[0xa11e9c]
./a.out[0x8048511]
======= Memory map: ========
009dd000-009f8000 r-xp 00000000 fd:00 163874 /lib/ld-2.5.so
009f8000-009f9000 r-xp 0001a000 fd:00 163874 /lib/ld-2.5.so
009f9000-009fa000 rwxp 0001b000 fd:00 163874 /lib/ld-2.5.so
009fc000-00b4e000 r-xp 00000000 fd:00 163908 /lib/libc-2.5.so
00b4e000-00b50000 r-xp 00152000 fd:00 163908 /lib/libc-2.5.so
00b50000-00b51000 rwxp 00154000 fd:00 163908 /lib/libc-2.5.so
00b51000-00b54000 rwxp 00b51000 00:00 0
00bd0000-00bd1000 r-xp 00bd0000 00:00 0 [vdso]
065a1000-065ac000 r-xp 00000000 fd:00 163933 /lib/libgcc_s-4.1.2-20080825.so.1
065ac000-065ad000 rwxp 0000a000 fd:00 163933 /lib/libgcc_s-4.1.2-20080825.so.1
08048000-08049000 r-xp 00000000 fd:00 393296 /home/ArmyAnt/src/a.out
08049000-0804a000 rw-p 00000000 fd:00 393296 /home/ArmyAnt/src/a.out
09dcf000-09df0000 rw-p 09dcf000 00:00 0 [heap]
b7fb8000-b7fba000 rw-p b7fb8000 00:00 0
bf938000-bf94d000 rw-p bffea000 00:00 0 [stack]
已放弃
作者: blackgenius 发布时间: 2010-08-01
回复 blackgenius
gdb 调试说我time()函数的地方有问题,所以我指定了一个time值time(0),确实可以排除段错误了,可惜可能我逻辑上有问题,导致生成的data文件里面的数据不对~呵呵
gdb 调试说我time()函数的地方有问题,所以我指定了一个time值time(0),确实可以排除段错误了,可惜可能我逻辑上有问题,导致生成的data文件里面的数据不对~呵呵
作者: blackgenius 发布时间: 2010-08-01
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28