【发布时间】:2013-09-20 12:08:00
【问题描述】:
我一直在尝试理解 malloc 和字符串,有人可以帮我解决这个问题吗 - 我遇到了一个错误的指针错误
char password[100];
char *key[2];
int textlen, keylen, i, j, k, t, s = 0;
printf("password:\n") ;
scanf("%s",password);
keylen = strlen(password) + 1;
for(i=0; i < keylen; i++)
{
key[i] = (char*)malloc(keylen * sizeof(char));
strcpy(key[i], password);
}
printf("The key is:\n\t %s", key);
【问题讨论】:
-
什么是“坏指针错误”?始终粘贴错误消息和您的输入,以便行为可重现。
-
键数组有两个条目,但是一旦密码有多个字符,您就可以编写方式粘贴第二个元素。
-
不确定你想做什么。无论如何,如果
password字符串大于1个字符,keylen会大于1,所以key[i]会越界访问。 -
为什么要使用 for 循环?您在 key 而不是 2 中创建了很多字符串并溢出。
-
@Zeta - 我单步执行了代码,当我到达 'key[i] = (char*)malloc(keylen * sizeof(char)); 时得到 '0xcccccccc
' '我的输入是“防御工事”