*arr = malloc(i * sizeof(struct cluster_t*));
を実行すると、コードがクラッシュすることがあります。クラスタは構造体です。 問題は何か分かりません。ここmalloc実行時にプログラムがクラッシュする
count=20
40 86 663
43 747 938
47 285 973
49 548 422
52 741 541
56 44 854
57 795 59
61 267 375
62 85 874
66 125 211
68 80 770
72 277 272
74 222 444
75 28 603
79 926 463
83 603 68
86 238 650
87 149 304
89 749 190
93 944 835
である:第二の入力は、別々の構造としては、配列にTXTファイルをロードすることになっている構造体(クラスタ)のアレイ、各ラインである第一の入力はこれを含む.txtファイルであります - 私が最新に保つ
int load_clusters(char *filename, struct cluster_t **arr) //nefunkcne
{
assert(arr != NULL);
char buffer_load[256] = {'0'};
int riadok = 0;
int count = 0;
int *X = malloc(sizeof(int));
if (X == NULL) {
perror("Chyba mallocu na load_clusters X");
free(X);
exit(EXIT_FAILURE);
}
int *Y = malloc(sizeof(int));
if (Y == NULL) {
perror("Chyba mallocu load_clusters Y");
free(X);
free(Y);
exit(EXIT_FAILURE);
}
int *ID = malloc(sizeof(int));
if (ID == NULL) {
perror("Chyba mallocu v load_clusters ID");
free(X);
free(Y);
free(ID);
exit(EXIT_FAILURE);
}
FILE *subor = fopen(filename, "r");
if (subor == NULL) {
perror("Chyba nacitania suobru fopen load_clusters!");
}
while (fgets(buffer_load, sizeof buffer_load, subor) != NULL) {
if (riadok > 0) {
struct cluster_t shluk;
sscanf(buffer_load,"%d %d %d", ID, X, Y);
init_cluster(&shluk, 1);
struct obj_t objekt;
objekt.id = *ID;
objekt.x = *X;
objekt.y = *Y;
append_cluster(&shluk, objekt);
arr[riadok - 1] = malloc(sizeof(struct cluster_t*));
if (arr[riadok-1] == NULL) {
perror("Chyba mallocu v load_clusters 388!");
free(arr[riadok - 1]);
exit(EXIT_FAILURE);
}
(*arr)[riadok - 1] = shluk;
} else {
sscanf(buffer_load, "count=%d", &count);
*arr = malloc(count * sizeof(struct cluster_t));
if (arr == NULL) {
perror("Chyba mallocu v load_clusters 400!");
free(*arr);
exit(EXIT_FAILURE);
}
}
riadok++;
}
fclose(subor);
free(X);
free(Y);
free(ID);
return cout;
}
全コード( `-std = c99をを使用することを忘れないでください:障害があるように思われるコードの一部は、(私は少し最初に答えた後、それを修正)これは完全なコードではありませんWextra -Wall -Werror -DNDEBUGまた数学ライブラリのためgcc内にある場合は-lm):
コメント拡張議論のためではありません。この会話は[チャットに移動]されています(http://chat.stackoverflow.com/rooms/130349/discussion-on-question-by-luk164-program-crashes-when-malloc-executed)。 –
上記の構造のdefを表示するのに常に良い –