嘿,我在 malloc 中使用 sizeof 运算符时遇到问题。例如见下文。代码-
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
char * copy(char *s)
{
char *t=malloc(sizeof(s));
char *ptr=s;
int i=0;
do
{
t[i++]=*ptr++;
}
while(*ptr!='\0');
return t;
}
int main()
{
char *s="hello adsjahsjkdhjkashdkjaskdasldjlasjdlajsdlkjaslkdjalsjdlasjdljasdljasdkljklsdjlasdsadasdasd";
char *b=copy(s);
printf("%s\n",b);
free(b);
return 0;
}
在 ideone 上,它给出了错误:- * 检测到 glibc./prog: free(): 下一个尺寸无效(快速):0x09bcf008 * *
但是当我用 malloc(strlen(s)+1) 替换 malloc(sizeof(s)) 时,程序运行良好。所以有什么问题?注意:这只是我创建的一个小程序,用于演示我在另一个代码中遇到的问题。