
色々試してみましたが全くわかりませんでした。
何が原因のエラーなのでしょうか?
また、どのように修正すればよいのでしょうか?
エラーメッセージの一部です。
(.fini+0x0): `_fini' が重複して定義されています
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crti.o(.debug_info): 再配置 0 が無効なシンボル索引 7 を持っています
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crti.o(.debug_info): 再配置 1 が無効なシンボル索引 8 を持っています
#include <stdio.h>
#include <stdlib.h>
typedef struct node
{
char moji;
struct node *next;
} NODE;
NODE head;
int
main ()
{
char n;
char del;
NODE *p;
NODE *cur;
NODE *pcur;
NODE *new;
head.next = NULL;
cur = &head;
do
{
scanf ("%c%*c", &n);
if (n == '-')
continue;
new = (NODE *) malloc (sizeof (NODE));
if (new == NULL)
{
printf ("malloc error\n");
return 0;
}
cur->next = new;
new->moji = n;
new->next = NULL;
cur = new;
printf("n='%c'\n",n);
}
while (n != '-');
printf("消したい文字を入力");
scanf("%c%*c", &del);
for(cur = &head; cur->next != NULL; cur = cur->next;){
if(cur->next->moji == del){
p = cur->next;
cur->next = cur->next->next;
}
}
cur = head.next;
while (cur != NULL)
{
printf ("%c\n", cur->moji);
cur = cur->next;
}
while(1) {
cur = head.next;
pcur = &head;
while( cur->next != NULL )
{
pcur = cur;
cur = cur->next;
}
free(cur);
pcur->next = NULL;
if( head.next == NULL ) break;
}
return 0;
}
A 回答 (8件)
- 最新から表示
- 回答順に表示
No.8
- 回答日時:
>メモリリークということはmallocでメモリ確保しなければいけないということでしょうか?
malloc()で確保したメモリ、どこで解放しています?
特に最初のループで確保した『複数の』メモリブロックを。
ループ2回目以降のmalloc()が失敗したときも盛大にリークしてますけどね。
# まぁ、そのあとプロセス終了するのでまともなOSであれば問題にはなりませんけど…行儀がいいとは言えませんね。
No.7
- 回答日時:
とりあえず, どのようにコンパイルしたのかを「正確に」書いてください.
「gcc -o 名前.c 名前 といった感じです」
のように曖昧にするのではなく, ね.
No.4
- 回答日時:
ついでに…エラーメッセージの一部でWeb検索すると…
http://stackoverflow.com/questions/10056724/link …
なんてのがヒット。
gccへのオプション指定とか間違っていませんか?
No.3
- 回答日時:
似たような質問を最近見たような気がしますが…。
>for(cur = &head; cur->next != NULL; cur = cur->next;){
の行でコンパイルエラーが指摘され、
指摘されているエラーを解消したら正常にビルドできましたよ。
CentOS7.xにて。
実行結果は期待通りにはなりませんでしたが。
# ってか、書かれている通りならメモリリークしますけど
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C# ref引数のnull判定
-
構造体のリスト削除
-
isset — 変数が宣言されている...
-
双方向リストのバブルソートに...
-
Aの値からBの値を除するとは??
-
信頼区間の1.96や1.65ってどこ...
-
Enterキーを押されたら次の処理...
-
#define _CRT_SECURE_NO_WARNIN...
-
「Aに対するBの割合」と「Aに対...
-
エクセルで可視セルにのみ値貼...
-
iconv_open失敗
-
20'(角度)の計算がわかりま...
-
構文エラー";"が型の前にあり...
-
エラー 添字が付けられた値が、...
-
2÷3などの余りについて
-
既定のコンストラクタがありま...
-
複数桁10進数の*桁目だけを抽出...
-
配列を関数に渡す方法
-
2曲同時再生するにはどうした...
-
C言語 エラーの原因がわからな...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
おすすめ情報
linux でコンパイルしています。
gcc -o 名前.c 名前 といった感じです。
メモリリークということはmallocでメモリ確保しなければいけないということでしょうか?
エラー内容は重複して定義と無効なシンボルと書いてあります。