首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么在这里realloc修改原创内容?

为什么在这里realloc修改原创内容?
EN

Stack Overflow用户
提问于 2010-12-20 15:53:57
回答 1查看 115关注 0票数 0

我要做的很简单:将消息缓冲区重新分配到一个大小(Size_t)的larger:size+1,但是我的原始内容被修改了( '33‘是怎么出来的?):

代码语言:javascript
复制
message:0x9ead008
  0:0 0 0 0 0 0 0 0 0 0 
message:0x9ead008
  0:0 0 0 33 0 0 0 0 0 0 0 

我的代码非常简单,以至于我找不到bug可以隐藏的地方:

代码语言:javascript
复制
#include <stdlib.h>   
#include <string.h>

void print_message(int* message,long n)   
{   
    int i;    
    for(i=0;i<n;i++)   
    {   
        if(i%48==0)    
            printf("\n%3d:",i/48);   
        printf("%d ",message[i]);                
    }    
    printf("\n");        

}

void realloc_test()
{
    int n=10;

    int* message=(int*)malloc(n*sizeof(int));
    printf("message:%p\n",message);

    print_message(message,n);
    memset(message,0,n);
    message=(int*)realloc(message,n+1);
    printf("message:%p\n",message);
    print_message(message,n+1);

    free(message);    
}

int main(int argc,char* argv[])   
{   
    realloc_test();     
    return 0;   
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-12-20 16:22:47

您的程序中存在错误。在function realloc_test()中更改行

代码语言:javascript
复制
message=(int*)realloc(message,n+1);

代码语言:javascript
复制
message=(int*)realloc(message,(n+1)*sizeof(int));

我想这会解决你的问题。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4487788

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档