LoginSignup
0
0

More than 1 year has passed since last update.

[02] C言語の独自メモリアロケータの振り返り ... ファイル構成とMakefile

Last updated at Posted at 2021-08-06
本シリーズのトップページ
https://qiita.com/robozushi10/items/ca7c25dab3c279ba4e2b

はじめに

本記事の趣旨は「01 概要」に記しているが、
要は 13年前(=2008年) に K&R をマネて実装した「自作メモリアロケータ」の振り返りである.

本項では「ファイルの構成」と「Makefile」について記す

ファイル構成

$ tree . --charset=c 
.
|-- Makefile
|-- main.c .............. アクセッサによる alloc と free の実行例
|-- memman.h ............ アクセッサの型定義、アクセッサのインスタンス化 API の定義
|-- memman.c ............ 上記 memman.h の実装部.
|-- priv_memman_core.h .. メモリチャンク(chunk)の型定義.
|-- memman_core.c ....... メモリチャンク(chunk)をリンクリストで管理する実装部.
|-- priv_memman_std.h ... リソース管理テーブルの型定義.
|-- memman_resource.c ... リソース管理テーブルの操作部.
|                         「リソース申請」が通ると、🛑人が手動でテーブルの要素を1個追加する🛑
|-- priv_memman_debug.h . デバッグ用ログ関数を定義している
`-- memman_debug.c ...... デバッグ用ログ関数の実装部

Makefile

常に「デバッグあり」(-g)で且つ「最適化なし」(-O0)でコンパイル〜リンクが行う.
生成されるプログラム名は「memman」である.

PROGRAM=memman

SRCS=main.c \
     memman.c \
     memman_core.c \
     memman_resource.c \
     memman_debug.c 


HDRS=memman.h \
     priv_memman_core.h \
     priv_memman_debug.h \
     priv_memman_std.h

OBJS=$(SRCS:%.c=%.o)

CC = gcc
LIBPATH = 
LIBS    = -lpthread
CFLAGS  = -Wall -g -O0 $(INCHEADER) 
LDFLAGS = $(LIBPATH)

$(PROGRAM):$(SRCS) $(HDRS)
    $(CC) $(CFLAGS) -o $(PROGRAM) $(SRCS) $(LDFLAGS) $(LIBS)

clean:
    \rm -f $(PROGRAM) $(OBJS)

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0