mallocで0byteを確保しようとすると?

アバター
MoNoQLoREATOR
記事: 284
登録日時: 14年前
住所: 東京

mallocで0byteを確保しようとすると?

投稿記事 by MoNoQLoREATOR » 13年前

やってみました。
予想:malloc関数は何もしない。NULLが返る。

実験用コード

CODE:

#include 
#include 

int main(){
	int* p = NULL;
	p = static_cast(malloc(0) );
	printf("%d", p);
	free(p);
}
結果はなんと、NULLではないメモリアドレスが表示されました。
う~む。何故なのでしょうねw?

以上、MoNoQLoREATORのスーパー無謀実験タイムでした。

アバター
tk-xleader
記事: 158
登録日時: 14年前

Re: mallocで0byteを確保しようとすると?

投稿記事 by tk-xleader » 13年前

mallocを含む、Cの標準ライブラリの記憶域管理関数で、要求された記憶域の大きさが0であるときの動作が、処理系定義ですから、どんな値が返ってきてもおかしくはないです。

アバター
MoNoQLoREATOR
記事: 284
登録日時: 14年前
住所: 東京

Re: mallocで0byteを確保しようとすると?

投稿記事 by MoNoQLoREATOR » 13年前

処理系依存なんですか~。