カテゴリー【C/C++】
Cannot access memory invalid chunk size pointerなどメモリエラーが頻発する場合
POSTED BY
2021-12-22
2021-12-22

Segmentation Falutでcoreを吐いて終了するケースは多々あるが、大抵はメモリエラー(アクセスできないポインタを参照した)である。
当方の場合、うっかりで一番多いのは、Cライクに定義した構造体の中にC++のクラスを含めてしまいそれをmallocしてしまったからというのが最多である。
つまりこんな感じ。コードはCっぽく書いて、便利なC++クラスのみ使いたい場合よくやる。
typedef struct { int a; int b; std::vector<std::string> s_array; } Test; int main(void) { Test* t = (Test*)malloc(sizeof(Test)); if(t) { t->s_array.push_back(std::string("あ")); //←たぶん落ちる free(t); //←これも落ちる } return 0; }
構造体の中にいようがなんだろうが、C++のクラスはsizeofやmallocを使って確保してはならないのだ。
上記コードはs_arrayにアクセスしようとした時点で落ちる。しなくてもたぶんfree()で落ちる。
対処法1:スタックで使う
Test t; t.s_array.push_back(std::string("あ"));
対処法2:構造体でなくちゃんとクラス定義しnew/deleteを使う。
class Test { public: int a; int b; std::vector<std::string> s_array; }; int main(void) { Test* t = new Test(); if(t) { t->s_array.push_back(std::string("あ")); //落ちない delete t; //落ちない } return 0; }
以上です。
美容皮膚科医 Dr.高須英津子が開発したドクターズコスメ【ジュランツ】

高須クリニック 美容皮膚科医 医師
高須英津子が研究・開発したドクターズコスメ Jullants ジュランツ
お...【READ MORE】
ミシュラン4年連続受賞&メディア実績多数!六本木の有名店による 本格冷凍ピザ【PST六本木】

◆メディア様へ◆
自宅で、"ピザ専門店"の味が楽しめると、
TV・メディアでも注目を集める
「冷凍ピザ」のア...【READ MORE】
Android
iPhone/iPad
Flutter
MacOS
Windows
Debian
Ubuntu
CentOS
FreeBSD
RaspberryPI
C/C++
PHP
Java
JavaScript
Node.js
Swift
Python
Amazon/AWS
CORESERVER
Google
仮想通貨
LINE
IBM Watson
Microsoft Azure
Xcode
VMware
MySQL
PostgreSQL
Redis
Groonga
Git/GitHub
Apache
nginx
Postfix
SendGrid
Hackintosh
Hardware
Fate/Grand Order
ウマ娘
将棋
※本記事は当サイト管理人の個人的な備忘録です。本記事の参照又は付随ソースコード利用後にいかなる損害が発生しても当サイト及び管理人は一切責任を負いません。
※本記事内容の無断転載を禁じます。
※本記事内容の無断転載を禁じます。
【キーワード検索】
足のむくみ・冷え、リンパ浮腫、こむら返りに【ルピエライン】
JSNレンタルサーバーの豊富な機能をご紹介します。機能満載で月額206円からご利用いただけます!
ぬか漬けの新しいカタチ!わずか90分でOK♪使い切りタイプのぬか床【かんたん ぬか美人】
デポジットタイプのショッピング専用クレジットカード誕生!!【Nexus Card】
山梨のプレミアムを届ける産地直送【Inakakara -Farm to Table-】
顧客・到着スピード・価格満足度3冠達成【ハチ110番】
フリーランスのファクタリングなら「請求書先払い」
ふんわりボディラインを目指す女の子専用のミルクティー!「Tee UP キノコ」
ブロガー専用WordPressテーマ「OPENCAGE」
オーダーメイドカーテンをシンプルに安く!品質良し!値段良し!【ジャパンカーテン】

JSNレンタルサーバーの豊富な機能をご紹介します。機能満載で月額206円からご利用いただけます!

ぬか漬けの新しいカタチ!わずか90分でOK♪使い切りタイプのぬか床【かんたん ぬか美人】

デポジットタイプのショッピング専用クレジットカード誕生!!【Nexus Card】

山梨のプレミアムを届ける産地直送【Inakakara -Farm to Table-】

顧客・到着スピード・価格満足度3冠達成【ハチ110番】

フリーランスのファクタリングなら「請求書先払い」

ふんわりボディラインを目指す女の子専用のミルクティー!「Tee UP キノコ」

ブロガー専用WordPressテーマ「OPENCAGE」

オーダーメイドカーテンをシンプルに安く!品質良し!値段良し!【ジャパンカーテン】

【最近の記事】【全部の記事】
【MetaMask】window.ethereumのeth_callで任意のコントラクト関数を呼ぶwindow.etereum.requestに渡すdataフィールドをABIエンコードで作成する
【Solidity】Remix IDEを使用してサーバー不要のコントラクト開発&デバッグ【Ethereum】
【Windows】Googleフォトからダウンロードした動画が音声のみで映像が再生されない場合
PostgreSQLをソースコードからインストールしてsystemdのサービスとして動かす
【Linux】mkfsコマンドでProceed anyway?と確認を求められるのを回避する
【Apache】www.のついたアクセスをすべてwww無しにリダイレクトする.htaccess設定
【Apache】www.なしのアクセスをすべてwww.へリダイレクトする.htaccess設定
【Apache】httpアクセスをすべてhttpsへリダイレクトする.htaccess設定
【Windows】MiniTool Partition Wizardで削除できないパーティションを消す&削除したファイルを復旧する
【人気の記事】【全部の記事】
進研ゼミチャレンジタッチをAndroid端末化するWindows版Google Driveが使用中と言われアンインストールできない場合
【Windows10】リモートデスクトップ間のコピー&ペーストができなくなった場合の対処法
Googleスプレッドシートを編集したら自動で更新日時を入れる
5chブラウザJane Styleの板一覧にゲーム板等が表示されない場合
Googleファミリーリンクで子供の端末の現在地がエラーで取得できない場合
【Javascript】JSON配列内にある特定要素の取得法【Node.js】
LinuxからWindowsの共有フォルダをマウントする
【Linux共通】プロキシサーバーの利用設定
【Anaconda3】指定した仮想環境でJupyter Notebookを動かす
【カテゴリーリンク】
Android
iPhone/iPad
Flutter
MacOS
Windows
Debian
Ubuntu
CentOS
FreeBSD
RaspberryPI
C/C++
PHP
Java
JavaScript
Node.js
Swift
Python
Amazon/AWS
CORESERVER
Google
仮想通貨
LINE
IBM Watson
Microsoft Azure
Xcode
VMware
MySQL
PostgreSQL
Redis
Groonga
Git/GitHub
Apache
nginx
Postfix
SendGrid
Hackintosh
Hardware
Fate/Grand Order
ウマ娘
将棋