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 投稿