#include <stdio.h>
#include <vector>
#include "SanaeStr.h"
int main(void){
std::vector<sanae::str> test;
test.add("hello");
printf("%s",test[0].c_str());
}
sanae::strのコード(github):
https://github.com/ubproject/Useful-headers/blob …
168行目のsfree()でブレークポイントが発生しましたって出てしまいました。
sfree関数は
#define sfree(d){free(d);d=NULL;}
ってやってあるので同じポインタにfreeをしないようにしてあるのですがなってしまって
訳が分かりません。
(メモリの内容を見るとfreeされているからNULLになってるはずがなぜかNULLになっていない。)
色々つけ足しながら作ってたのでごちゃごちゃしてますがやさしめに教えていただけると嬉しいです。
No.1ベストアンサー
- 回答日時:
もうちょっと具体的に詳細を書いてくれませんか?
どんなソフトで作って実行しているのですか?
「ブレークポイントが発生しました」の前後に何かかいてないですか?
・std::vectorの要素としてクラスを指定する場合、コピーコンストラクタまたはムーブコンストラクタが必要となってきます。
定義してない場合はデフォルトのものが使われます。
デフォルトのコンストラクタで「浅いコピー」で作られたために、複数のstrインスタンスで、同じアドレスを示すstを持ってしまい、それぞれがfreeしようとして最初のだけ成功する、というのはありそうです。
・直接は関係ないかもしれませんが、正直読み難いです。
mallocのサイズ計算を間違えていないか?とも思っているのですが
(少なくとも char* str1 = (char*)malloc(sizeof(char*) * position); 等は、結果オーライなだけで、正しくはありません)
mallocやfreeがあちらこちらに散らかっていて確認し辛いです。
メソッドにまとめるとかしましょう。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- C言語・C++・C# 質問です 下記のコードを分かりやすく解説お願いします 初心者です #include ‹stdio.h 3 2022/05/26 22:03
- C言語・C++・C# 宣言する関数の形が決まっている状態で、 str1とstr2の文字列をこの順に引っ付けてstrに保存し 2 2022/05/30 18:21
- C言語・C++・C# const char** p;のとき、free(p)でC4090エラーとなるのはなぜですか 3 2023/03/31 16:28
- C言語・C++・C# c言語配列の結合についてです。 なぜうまくいかないのでしょうか。 #include <stdio.h 4 2022/05/30 22:42
- C言語・C++・C# バイナリファイルをコピーするのにかかる時間を測りたいのですが実行するとFatel error:gli 2 2022/11/03 01:10
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- C言語・C++・C# c言語 プログラムのエラー 1 2023/02/11 20:31
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- C言語・C++・C# カードシャッフルのブログラムを使ってc言語でブラックジャックをしたい 2 2022/04/12 15:13
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
enumの値から定義名を文字列化...
-
なぜ、C++の標準ヘッダをインク...
-
空ENTERの判別
-
指定した文字を削除したい
-
#defineの使い方について
-
snprintfが使用できない。
-
wstringの主力
-
std::map の const 修飾について
-
#define中の#のエスケープ
-
c++のvirtual関数および継承に...
-
C++ 数値データファイルから2次...
-
C++で、環境変数の読み込み方を...
-
構文エラーが出ているのですが...
-
c++ ファイルからの複素数の読...
-
string型のフォーマット書式指...
-
gccでコンパイル時のエラー
-
C++文字配列ソート関数を教えて...
-
C言語のエラーを修正したい
-
iostream インクルード時に発生...
-
_tcscat がうまくいきません(V...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
switch文のエラーについて
-
構文エラーが出ているのですが...
-
VC++で文字列から任意の文字を...
-
enumの値から定義名を文字列化...
-
空ENTERの判別
-
C++でShowCursorを使いたい。
-
なぜ、C++の標準ヘッダをインク...
-
#define中の#のエスケープ
-
C++で、テキストファイルを一行...
-
gccでコンパイル時のエラー
-
C言語のエラーを修正したい
-
#include "fstream.h"
-
C言語のポインターで詰まっている
-
リモートデスクトップの接続元I...
-
構造体配列のvectorへの変換と...
-
JPEGやPNGが読めるLoadImage関数
-
VS2019でofstreamが未定義になる
-
構造体に決められた文字列を入...
-
VHDLのsignedとunsignedの違いは?
-
std::wstringのメモリリークに...
おすすめ情報