免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1984 | 回复: 3
打印 上一主题 下一主题

[C] 内存分配错误,大家来看一下 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-10-27 14:17 |只看该作者 |倒序浏览
代码如下:

   char *p0 = (char *)malloc( sizeof(char)* 100);        //wanquan                pipei
    char *p1 = (char *)malloc( sizeof(char)* 100);        //ISP                        pipei
    char *p2 = (char *)malloc( sizeof(char)* 100);        //privince and city                        pipei
    char *p3 = (char *)malloc( sizeof(char)* 100);        //country                        pipei
    char *p4 = (char *)malloc( sizeof(char)* 100);        //wanquan                pipei
   
    mysql_init(&mysql);

    if( !mysql_real_connect(&mysql, "localhost", "root", "02211025", "UNS", 0, NULL, 0)){
                printf(" could not connect to MySQL server\n") ;
                exit (0);
    }

    sprintf(p0,"SELECT * FROM UNS WHERE ISP = '%s' AND Country = '%s' AND Privince = '%s' AND City = '%s'" , argv[4], argv[1], argv[2], argv[3] ) ;
    printf("%s\n",p0) ;                                //test
   
    sprintf(p1,"SELECT * FROM UNS WHERE ISP = '%s'" , argv[4] ) ;
    printf("%s\n",p1) ;                                //test
       
    sprintf(p2,"SELECT * FROM UNS WHERE Privince = '%s' AND City = '%s'" , argv[2], argv[3] ) ;
    printf("%s\n",p2) ;                                //test

    sprintf(p3,"SELECT * FROM UNS WHERE Country = '%s'" , argv[1] ) ;
    printf("%s\n",p3) ;                                //test
   
    sprintf(p4,"SELECT * FROM UNS WHERE ISP = '%s' AND Country = '%s' AND Privince = '%s' AND City = '%s'" , argv[4], argv[1], argv[2], argv[3] ) ;
    printf("%s\n",p4) ;                                //test
   
   
    //
    //condition of wanquan pipei
    //
    printf("******wanquan pipei de qingkuang:*******\n");
    if( mysql_query (&mysql, p4) !=0){
                printf(" Error in query\n") ;
                exit(0) ;
    }

    result = mysql_store_result (&mysql) ;

    while((row = mysql_fetch_row (result))){
                fprintf(stdout,"%s - %s - %s - %s - %s - %s - %s\n", row[0], row[1], row[2], row[3], row[4], row[5], row[6]);
    }

    ........


    free (p0) ;
    free (p1) ;
    free (p2) ;
    free (p3) ;
    free (p4) ;

    mysql_free_result (result) ;   
    mysql_close (&mysql) ;


#######################

p0和p4是一样的,可是在红色标注处,用p4可以查询成功,可是用p0的时候就不能查询成功。


并且在释放内存的时候出现错误,也就是在用到
free (p0);
的时候 出现错误。

错误记录为 :


*** glibc detected *** ./serverselect_v_0_1_1: double free or corruption (!prev): 0x09d40008 ***
======= Backtrace: =========
/lib/i686/nosegneg/libc.so.6[0xcc5b01]
/lib/i686/nosegneg/libc.so.6(cfree+0x90)[0xcc91b0]
./serverselect_v_0_1_1[0x8048d64]
/lib/i686/nosegneg/libc.so.6(__libc_start_main+0xe0)[0xc72f70]
./serverselect_v_0_1_1[0x80486a1]
======= Memory map: ========
00242000-00243000 r-xp 00242000 00:00 0          [vdso]
002a2000-002ac000 r-xp 00000000 fd:00 65385      /lib/libnss_files-2.6.so
002ac000-002ad000 r--p 00009000 fd:00 65385      /lib/libnss_files-2.6.so
002ad000-002ae000 rw-p 0000a000 fd:00 65385      /lib/libnss_files-2.6.so
00483000-004aa000 r-xp 00000000 fd:00 65354      /lib/i686/nosegneg/libm-2.6.so
004aa000-004ab000 r--p 00026000 fd:00 65354      /lib/i686/nosegneg/libm-2.6.so
004ab000-004ac000 rw-p 00027000 fd:00 65354      /lib/i686/nosegneg/libm-2.6.so
00c5d000-00daf000 r-xp 00000000 fd:00 65352      /lib/i686/nosegneg/libc-2.6.so
00daf000-00db1000 r--p 00151000 fd:00 65352      /lib/i686/nosegneg/libc-2.6.so
00db1000-00db2000 rw-p 00153000 fd:00 65352      /lib/i686/nosegneg/libc-2.6.so
00db2000-00db5000 rw-p 00db2000 00:00 0
08048000-0804a000 r-xp 00000000 fd:00 1209133    /home/UNS/serverselect_v_0_1_1
0804a000-0804b000 rw-p 00001000 fd:00 1209133    /home/UNS/serverselect_v_0_1_1
09d40000-09d82000 rw-p 09d40000 00:00 0
4aea5000-4aec0000 r-xp 00000000 fd:00 67517      /lib/ld-2.6.so
4aec0000-4aec1000 r--p 0001a000 fd:00 67517      /lib/ld-2.6.so
4aec1000-4aec2000 rw-p 0001b000 fd:00 67517      /lib/ld-2.6.so
4aec4000-4aed4000 r-xp 00000000 fd:00 67528      /lib/libresolv-2.6.so
4aed4000-4aed5000 r--p 0000f000 fd:00 67528      /lib/libresolv-2.6.so
4aed5000-4aed6000 rw-p 00010000 fd:00 67528      /lib/libresolv-2.6.so
4aed6000-4aed8000 rw-p 4aed6000 00:00 0
4af3b000-4af50000 r-xp 00000000 fd:00 67534      /lib/libnsl-2.6.so
4af50000-4af51000 r--p 00014000 fd:00 67534      /lib/libnsl-2.6.so
4af51000-4af52000 rw-p 00015000 fd:00 67534      /lib/libnsl-2.6.so
4af52000-4af54000 rw-p 4af52000 00:00 0
4b855000-4b857000 r-xp 00000000 fd:00 67536      /lib/libcom_err.so.2.1
4b857000-4b858000 rw-p 00001000 fd:00 67536      /lib/libcom_err.so.2.1
4b85a000-4b85c000 r-xp 00000000 fd:00 67535      /lib/libkeyutils-1.2.so
4b85c000-4b85d000 rw-p 00001000 fd:00 67535      /lib/libkeyutils-1.2.so
4b85f000-4b866000 r-xp 00000000 fd:00 2189075    /usr/lib/libkrb5support.so.0.1
4b866000-4b867000 rw-p 00006000 fd:00 2189075    /usr/lib/libkrb5support.so.0.1
4b9f7000-4b9fa000 r-xp 00000000 fd:00 67519      /lib/libdl-2.6.so
4b9fa000-4b9fb000 r--p 00002000 fd:00 67519      /lib/libdl-2.6.so
4b9fb000-4b9fc000 rw-p 00003000 fd:00 67519      /lib/libdl-2.6.so
4b9fe000-4ba10000 r-xp 00000000 fd:00 67523      /lib/libz.so.1.2.3
4ba10000-4ba11000 rw-p 00011000 fd:00 67523      /lib/libz.so.1.2.3
4bc8e000-4bc99000 r-xp 00000000 fd:00 67527      /lib/libgcc_s-4.1.2-20070503.so.1
4bc99000-4bc9a000 rw-p 0000a000 fd:00 67527      /lib/libgcc_s-4.1.2-20070503.so.1
4c455000-4c571000 r-xp 00000000 fd:00 67537      /lib/libcrypto.so.0.9.8b
4c571000-4c583000 rw-p 0011c000 fd:00 67537      /lib/libcrypto.so.0.9.8b
4c583000-4c587000 rw-p 4c583000 00:00 0
4c589000-4c5ca000 r-xp 00000000 fd:00 67538      /lib/libssl.so.0.9.8b
4c5ca000-4c5ce000 rw-p 00040000 fd:00 67538      /lib/libssl.so.0.9.8b
4c5d0000-4c5f5000 r-xp 00000000 fd:00 2189076    /usr/lib/libk5crypto.so.3.1
4c5f5000-4c5f6000 rw-p 00025000 fd:00 2189076    /usr/lib/libk5crypto.so.3.1
4c5f8000-4c687000 r-xp 00000000 fd:00 2189077    /usr/lib/libkrb5.so.3.3
4c687000-4c689000 rw-p 0008f000 fd:00 2189077    /usr/lib/libkrb5.so.3.3
4c68b000-4c6b7000 r-xp 00000000 fd:00 2189078    /usr/lib/libgssapi_krb5.so.2.2
4c6b7000-4c6b9000 rw-p 0002c000 fd:00 2189078    /usr/lib/libgssapi_krb5.so.2.2
4cabc000-4cbdd000 r-xp 00000000 fd:00 624498     /usr/lib/mysql/libmysqlclient.so.15.0.0
4cbdd000-4cc1f000 rw-p 00120000 fd:00 624498     /usr/lib/mysql/libmysqlclient.so.15.0.0
4cc1f000-4cc20000 rw-p 4cc1f000 00:00 0


################

谢谢!

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
2 [报告]
发表于 2007-10-27 14:21 |只看该作者
检查下 SQL 语句的长度。

论坛徽章:
0
3 [报告]
发表于 2007-10-27 16:48 |只看该作者
哦,是不是分配的地址空间不够啊!

好像是,我试试

谢谢!

论坛徽章:
0
4 [报告]
发表于 2007-10-27 16:56 |只看该作者
谢谢!
是分配的内存不够!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP