嘿,我在 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)) 时,程序运行良好。所以有什么问题?注意:这只是我创建的一个小程序,用于演示我在另一个代码中遇到的问题。