c语言错误writing,请教:调用malloc时出现Access violation writing location的错误怎么办??...

已结贴√

问题点数:15 回复次数:5

ca56232b3bbedf9a539d07f37fffb99a.gif

3144d8b7615c79d9f638db40d5689d26.gif

a218af6549b45ee526caf607ebff1358.gif

0f8df0e29816ae721419de940fb833d1.gif

请教:调用malloc时出现Access violation writing location的错误怎么办??

#include"stdio.h"

#include"malloc.h"

#define ERROR 0

#define OK 0

#define    STACKINCREMENT 5

typedef int status;

typedef struct List

{

char *base;

int length;

int listsize;

}List;

typedef struct BiTree

{

BiTree *lchild;

BiTree *rchild;

char data;

}BiTree, *BiTreeP;

typedef struct stack

{

BiTreeP *base;

BiTreeP *top;

int stacksize;

}stack;

status InitList(List *l)

{

if(!(l = (List*)malloc(sizeof(List)))) return ERROR;

l->base = NULL;

l->length = 0;

l->listsize = 0;

}

status scandata(List *l,int n)

{

if(!(l->base = (char*)malloc(n*sizeof(char)))) return ERROR;//程序卡在这一行,给出的错误对话框是:"

char *p = l->base;                                          //Unhandled exception at 0x00f61497 in BiTree.exe: 0xC0000005:

while(p)                                                    //Access violation writing location 0x00000000."

{

scanf("%d",p);

p++;

}

}

status InitStack(stack *s,int n)

{

s->stacksize = n;

if(!(s->base = (BiTreeP*)malloc(sizeof(BiTreeP)))) return ERROR;

s->top = s->base;

}

int push(stack *s,BiTree *ch)

{

if(!(s->base + s->stacksize <= s->top))

{

BiTreeP *newbase;

if(!(newbase = (BiTreeP*)realloc(s,(s->stacksize + STACKINCREMENT)*sizeof(BiTreeP))))

return ERROR;

else

{

s->stacksize += STACKINCREMENT;

s->base = newbase;

s->top = s->base + s->stacksize;

}

}

*(s->top++) = ch;

return OK;

}

int StackEmpty(stack *s)

{

if(s->top = s->base) return 1;

else return 0;

}

status main()

{

BiTree *ps = NULL;

stack *s = NULL;

List *l = NULL;

char * pl = NULL;

int n;

InitList(l);

printf("How many data will be inputed ?\n");

scanf("%d",&n);

scandata(l,n);

InitStack(s,n);

if(!(ps = (BiTree*)malloc(sizeof(BiTree)))) return ERROR;

push(s,ps);

while(!StackEmpty(s))

{

while(*pl != '#')

{

if(!(ps->lchild = (BiTree*)malloc(sizeof(BiTree)))) return ERROR;

ps->data = *pl;

push(s,ps);

ps =ps->lchild;

pl++;

}

ps = ps->rchild;

pl++;

}

return OK;

}

搜索更多相关主题的帖子:

return

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
根据引用\[1\]和引用\[2\]的信息,你遇到的问题是在编译Redis出现错误信息"cc: error: ../deps/jemalloc/lib/libjemalloc.a: No such file or directory"。这个错误通常是由于缺少jemalloc库文件引起的。 根据引用\[3\]提供的解决方法,你可以尝试以下步骤来解决这个问题: 1. 确保你已经正确解压了Redis源代码文件。 2. 进入Redis源代码的src路径。 3. 运行"make"命令进行编译,如果出现错误信息,继续下一步。 4. 进入Redis源代码的deps/jemalloc路径。 5. 运行"./configure"命令进行编译。 6. 返回src路径,重新运行"make MALLOC=libc"命令进行编译。 7. 运行"make install PREFIX=路径"命令进行自定义安装路径。 8. 完成上述步骤后,你可以继续配置Redis的哨兵、集群或者单机模式。 这些步骤应该能够帮助你解决编译Redis出现错误信息"./malloc/malloc.c: No such file or directory"。希望对你有帮助! #### 引用[.reference_title] - *1* [cc: error: ../deps/jemalloc/lib/libjemalloc.a: No such file or director](https://blog.csdn.net/weixin_57871623/article/details/121859203)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [redis编译报错cc: error: ../deps/jemalloc/lib/libjemalloc.a: No such file or directory](https://blog.csdn.net/L_congcong/article/details/102903272)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值