【发布时间】:2014-08-06 08:19:18
【问题描述】:
这是我的代码:
nodebug void sendLogPacketS(char *func, char *msg)
{
char * log;
memset(log, 0, strlen(func) + strlen(msg) + 1);
strcpy(log, func);
strcat(log, ": ");
strcat(log, msg);
sendUDPLogPacket(log, strlen(log));
}
它应该接受两个字符串,将它们连接在一起,然后将新字符串及其长度传递给不同的函数。我使用的是 Dynamic C 9.62,它不支持malloc 函数,所以我改用 memset。
问题是当我在传递给sendUDPLogPacket 之前打印log 的值时,它包含垃圾DynamiCUniversal Rabbit BIOS Version 9.50\?^>j。有人知道为什么这不起作用吗?
【问题讨论】:
-
memset()填充已分配的内存。它不分配内存。log指向一个随机位置,在您的情况下(幸运的是)该位置似乎不可写,因此您打印的是错误数据,而不仅仅是崩溃。
标签: c strcpy strcat char-pointer