Goにおける変数のライフサイクルとメモリ管理

変数の有効期間とメモリ割り当ての仕組み Go言語では、変数のライフサイクル(生存期間)がそのメモリ割り当て場所(スタックまたはヒープ)に直接影響します。変数がいつ、どこでどのように確保されるかを理解することで、パフォーマンスの最適化や不要なガベージコレクション(GC)負荷の低減が可能になります。 スタックとヒープの違い スタック: 関数呼び出し時に ...

7月24日 21:19 投稿

C言語によるヒープと二分木の実装

ヒープデータ構造の実装 ヘッダファイル定義 #pragma once #include <stdio.h> #include <stdlib.h> #include <assert.h> #include <stdbool.h> typedef int HeapValue; typedef struct MinHeap { HeapValue* elements; int count; int capacity; } MinHeap; void HeapInitialize(MinHeap* heap); void HeapDestroy(MinHeap* heap) ...

7月23日 19:21 投稿

new演算子、継承、スタックとヒープ、シリアライズコピーとシャローコピー

new演算子の内部仕組み new演算子はオブジェクトをインスタンス化し、新しいオブジェクトを返します。コンストラクタ関数内のthisはインスタンスに参照されます。 new演算子の内部プロトタイプ var p1 = {} で新規オブジェクトを作成し、メモリ空間を確保します。 Person.call(p1) を使用して、Person関数内のthisをp1に変更します。 p1.__proto__ == Person.prototype ...

6月26日 17:55 投稿

ヒープ構造の理解と実装:データ構造入門から実践まで

前書き コンピュータサイエンスにおいて、ヒープ(Heap)は優先度付きキューの実装や効率的なソートアルゴリズム(ヒープソート)に使われる重要なデータ構造です。ヒープは完全二分木をベースにしており、配列による順序表現が可能で、メモリ効率と操作速度のバランスに優れています。 1. 木構造の基礎 1.1 木とは 木は非線形データ構造で、ノードの階層的集合です。根( ...

5月16日 12:26 投稿

滑動窓最大値と上位K頻度要素のアルゴリズム実装

LeetCode 239. スライディングウィンドウ最大値 問題リンク:239. スライディングウィンドウ最大値 - LeetCode ​アプローチ: ウィンドウの左端が常に最大値となるように維持し、popleft操作で自動的に最大値を取得できるようにする。 # Pythonで双端キューを使用した実装 class Solution: def maxSlidingWindow(self, nums: List[int], k: int) -> List[int]: ...

5月16日 02:53 投稿

JVMのメモリモデル

JVMメモリ構造の概要 JVMのランタイムデータ領域はいくつかの部分に分かれますが、オブジェクトのデータを主に格納するのはヒープ領域とメソッド領域(非ヒープ領域)です。これらの領域はスレッド間で共有されます。一方、スタック(仮想マシンスタック、ネイティブメソッドスタック、プログラムカウンタ)は各スレッドごとに独立しています。 ヒープ領域は主に以下の部分 ...

5月16日 00:20 投稿