C 返回时间错误

C 返回时间错误,c,C,程序将返回一组字符串“This is James:00:00:00”和时间格式,但它崩溃了。我认为内存分配丢失,但无法确定错误在哪里 FREObject result = 0; uint32_t len = -1; const uint8_t *str = 0; char *temp; uint8_t *strAll; time_t curtime; struct tm *loctime; /* Get the current time. */ curtime = time(NULL);

程序将返回一组字符串“This is James:00:00:00”和时间格式,但它崩溃了。我认为内存分配丢失,但无法确定错误在哪里

FREObject result = 0;

uint32_t len = -1;
const uint8_t *str = 0;
char *temp;
uint8_t *strAll;

time_t curtime;
struct tm *loctime;

/* Get the current time. */
curtime = time(NULL);

/* Convert it to local time representation. */
loctime = localtime(&curtime);

//Turn our actionscrpt code into native code.
if(FREGetObjectAsUTF8(argv[0], &len, &str) == FRE_OK) {
    temp = "Hello World! This is ";

    strAll = (char *)malloc(sizeof(temp) + sizeof(str) + sizeof(loctime));
    strcpy(strAll,temp);
    strcat(strAll,str);
    strcat(strAll,asctime(loctime));
}

您可能想要
strlen
,而不是
sizeof

strAll = (char *)malloc(sizeof(temp) + sizeof(str) + sizeof(loctime));
而且
sizeof(loctime)
也没有什么意义。您可能希望将其替换为
asctime(loctime)

也许是这样的:

char *asc = asctime(loctime);
strAll = malloc(strlen(temp) + strlen(str) + stren(asc) + 1);

您可能想要
strlen
,而不是
sizeof

strAll = (char *)malloc(sizeof(temp) + sizeof(str) + sizeof(loctime));
而且
sizeof(loctime)
也没有什么意义。您可能希望将其替换为
asctime(loctime)

也许是这样的:

char *asc = asctime(loctime);
strAll = malloc(strlen(temp) + strlen(str) + stren(asc) + 1);

虽然我想知道为什么所有的代码都使用“sizeof”来代替,但这是可行的?这是否意味着它应该只用于乘法数据类型,如:sizeof(char)*strlen(str)@JamesONG中的
sizeof
操作符的工作方式与您想象的不同。我不能用600个字符提供一个充分的解释,你需要读一本书。好的,我会读的。我还需要输出毫秒格式的时间,而不是日期结构。我一直在查找许多类型的时间,您认为哪种时间函数最适合使用GCC编译器的Windows 7操作系统?我需要跟踪MIDI计时,因此,需要比较评分部分的毫秒数。@JamesONG尝试其中一种可能吗?虽然我想知道为什么所有代码都使用“sizeof”来代替?这是否意味着它应该只用于乘法数据类型,如:sizeof(char)*strlen(str)@JamesONG中的
sizeof
操作符的工作方式与您想象的不同。我不能用600个字符提供一个充分的解释,你需要读一本书。好的,我会读的。我还需要输出毫秒格式的时间,而不是日期结构。我一直在查找许多类型的时间,您认为哪种时间函数最适合使用GCC编译器的Windows 7操作系统?我需要跟踪MIDI计时,因此,需要比较评分部分的毫秒数。@JamesONG试试其中一个?