該程序運行良好,除了最後一次免費,導致程序凍結。 當我註釋掉最後一個'空閒'時,它運行良好。錯誤釋放C **指針malloced在功能
該程序從一個字符串獲取所有子字符串並返回它。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char** getPrefixes(char* invoer);
int main()
{
char buffer[100];
char *input;
char **prefixes;
int counter = 0;
puts("Give string.");
fgets(buffer, 99, stdin);
fflush(stdin);
if (buffer[strlen(buffer) - 1] == '\n')
buffer[strlen(buffer) - 1] = '\0';
input= (char*)malloc(strlen(buffer) + 1);
if (input == NULL)
{
puts("Error allocating memory.");
return;
}
strcpy(input, buffer);
prefixes = (char**) getPrefixes(input);
for (counter = strlen(input); counter > 0; counter--)
{
puts(prefixes[counter]);
free(prefixes[counter]);
}
free(input);
free(prefixes);
}
char** getPrefixes(char* input)
{
char** prefixes;
int counter;
prefixes = malloc(strlen(input) * sizeof(char*));
if (prefixes == NULL)
{
puts("ELM.");
return NULL;
}
for (counter= strlen(input); counter> 0; counter--)
{
prefixes[counter] = (char*)malloc(counter + 1);
strcpy(prefixes[counter], input);
input++;
}
return prefixes;
}
在此先感謝!
什麼是**出納員**?既沒有定義也沒有初始化。 –
只是'免費'前綴'是不夠的,你也需要'免費'個人'前綴'[i]'。 – HAL
'@MichaelWalz:'teller'是'counter'的荷蘭語,我把它翻譯成代碼之前粘貼它的一部分,但不是全部,就像'getPrefixes(char * input)'是'getPrefixes char * invoer)'higher up –