誰能解釋一下我為什么會出現這種錯誤,以及我如何才能糾正它?
#include<stdio.h>
#include<stdlib.h>/span>
char makemeunique(char *s,int l)
{
char *xp=(char *)malloc(l*sizeof(char) )。)
int *pp=xp;
for(int i=1; i<l; i )
{
int yes=0;
for(int j=i-1; j> =0; j--)
{
if(s[i]==s[j])
yes=1。
}
if(yes-1)
*pp =s[i]。
}
*pp=''/span>。
printf("%s
",xp)。)
return xp。
}
主函式
int main()
{
char s[9999],x [9999]。
scanf("%s
%s",s,x)。
char *p1, *p2;
p1=makemeunique(s, strlen(s))。
p2=makemeunique(x, strlen(x))。
我的輸出:
Hello: malloc.c:2385: sysmalloc: 斷言(old_top == initial_top (av) && old_size == 0) || (((無符號long) (old_size) >=MINSIZE && prev_inuse (old_top) && ((unsigned long) old_end& (pa gesize - 1)) == 0)'失敗。終止(核心轉儲)。
這個輸出是什么意思?
這個程式只是得到兩個字串并呼叫函式,并將創建的堆陣列存盤在指標中。
uj5u.com熱心網友回復:
你在:
創建了錯誤的指標型別。int *pp=xp;
pp應該是char*:每次做*pp 的時候,你都會加上sizeof(int),而不是sizeof(char):結果是你超出了分配的記憶體到xp,這可能導致通常的C的未定義行為。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/322439.html
標籤:


