运行上面的代码时出现_CrtIsValidHeapPointer(pUserData)错误。 有时代码运行完美,有时会出现此消息。所以我猜这个问题与内存分配有关。但是我已经多次查看了代码并且数字对我(以及调试时)也是如此。 我注意到它在调试时发生在“free(str_temp)”行中。
相关代码在这里:
int main(){
int n;
int len;
char *str;
char command[3];
printf("Enter your string:\n");
scanf("%d", &n);
str = malloc(n+1);
scanf("%s", str);
while (1){
printf(">");
scanf("%s", command);
if (compare(command, "ml")) {
int k;
scanf("%d", &k);
multiply(str, n, k);
printf("Current string is %s\n", str);
n = ln(str);
continue;
}
free(str);
return 0;
}
void multiply(char *str, int n, int k) {
char *str_temp = malloc(n+1);
int i;
int j;
int q;
for (i = 0; i < n; i++){
str_temp[i] = str[i];
}
str_temp[n] = '\0';
free(str);
*str = malloc(n*k+1);
for (i = 0; i < k; i++){
for (j = 0; j < n; j++){
str[i*n + j] = str_temp[j];
}
}
str[n*k] = '\0';
free(str_temp);
}
答案 0 :(得分:0)
尝试使用消息定义
void multiply(char **str, int n, int k)//Use **str(double pointer) instead of *str.
并称之为
multiply(&str, n, k);