当前位置:  技术问答>linux和unix

malloc(): memory corruption问题

    来源: 互联网  发布时间:2016-03-05

    本文导语:  typedef struct tagKZXSEROUTS{ char zxserip[16]; int zxseroutch; char zxserphone[10]; int zxserinch; struct tagKZXSEROUTS *next; } ZXSEROUTS; int createZXSEROutchs(char *ip, int outch, char *phone) { ZXSEROUTS *pc, *tmppc; printf("1111111,sizeof:%dn", sizeof(ZX...

typedef struct tagKZXSEROUTS{
char zxserip[16];
int zxseroutch;
char zxserphone[10];
int zxserinch;
struct tagKZXSEROUTS *next;
} ZXSEROUTS;
int createZXSEROutchs(char *ip, int outch, char *phone)
{
ZXSEROUTS *pc, *tmppc;
printf("1111111,sizeof:%dn", sizeof(ZXSEROUTS));
if ((pc = (ZXSEROUTS *)malloc(sizeof(ZXSEROUTS))) == NULL)
{
printf("22222222n");
}
//pc = (ZXSEROUTS *)malloc(sizeof(ZXSEROUTS));
printf("33333333n");
sprintf(pc->zxserip, "%s", ip);
pc->zxseroutch = outch;
pc->zxserinch = -1;
sprintf(pc->zxserphone, "%s", phone);
pc->next = NULL;
if (g_poutchhead)
{
tmppc = g_poutchhead;
while (tmppc->next)
{
tmppc = tmppc->next;
}
tmppc->next = pc;
}else
{
g_poutchhead = pc;
}
return 0;
}

==================
1111111,sizeof:40
33333333
33333333,,sizof:10
1111111,sizeof:40
*** glibc detected *** malloc(): memory corruption: 0x08287eb8 ***
忽略

开始的时候是可以运行的,后来因为需要在结点中加了一个变量(sprintf(pc->zxserphone, "%s", phone);)再执行就出现上面的问题了,我在网上也找过资料,但是没有明白。
网上基本上说是堆被破坏了,或free两次出现的问题,可是我没有进行free,也只是分配一下内存而以,为什么会出这个问题呢,另外只要把sprintf(pc->zxserphone, "%s", phone);注释,代码就就可以正常运行了,可是这行是必须的,我该怎么办呢?

|
33333333,,sizof:10 是哪里打出来的?
你每次把phone的值打出来看看,有没有可能超长了?我觉得就是因为phone超长(长度大于9)导致内存侵犯了。

|
phone字符串的长度大于10了。因为成员zxserphone的长度是10。如果你存个手机号,那就是11位,加上0位的,字符串结束符'',就造成了2个字符的溢出。

    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • linux c malloc函数定义及用法详解
  • gcc -shared -fpic malloc.c -o malloc.so
  • c/c++中的内存分配 malloc 和 new介绍及相互之间的区别
  • glibc源码中malloc函数在哪里实现的?
  • malloc函数详解及用法举例
  • 关于malloc的问题
  • 数据库 iis7站长之家
  • malloc函数的问题
  • malloc和realloc的区别
  • free 和malloc的问题
  • 问个malloc函数的问题
  • malloc fail時的作法
  • 数组和malloc问题求助
  • malloc问题
  • AIX机器上遇到的malloc问题
  • log-malloc2
  • 程序调用malloc,引发segmention error,怎么会这样??????????
  • 求救一个关于malloc的问题,
  • 请教》 关于UNIX系统中 malloc 调用的严重问题。 求救。
  • mmap和malloc的区别是什么?
  • 在驱动程序里,用数组,或malloc是申请到虚拟内存吧?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3