-2

我正在调用一个函数 parse_consol(definition1); 其中定义,即传递的参数是 char* 类型,并且是 xml 文件的绝对路径。当我检查(通过调试)传递的值是绝对正确的但是当控制到函数的定义时,它所取的值在最后附加了一些随机字符,这导致失败。

我需要知道这些字符是如何附加到函数定义中的实际参数的末尾的。

以下评论中的代码:

definition_state1 = (char*)malloc(((int) strlen(((char*)definition_path)+1))); 
strcpy(definition_state1 ,(char*)definition_path); 
definition_state2 = (char*)malloc(((int) strlen(((char*)value[1])+1))); 
strcpy(definition_state2 ,(char*)value[1]); 
strcat(definition_state1,definition_state2); 
get_license_properties("D:\\Automation\\InputFiles\\current_state\\c2v1.c2v"); // parser for decoded c2v 
parse_consolidated(definition_state1); // parser for consolidated xm
4

1 回答 1

4

很可能您正在溢出definition_state1缓冲区。您分配了definition_path+1缓冲区并复制definition_path到缓冲区中。然后你附加definition_state2到这个缓冲区肯定会溢出definition_state1缓冲区。

于 2013-05-23T06:29:25.513 回答