0
なぜこの単純なC++コードスニペットはコンパイルされませんか?C++ std :: sort intelコンパイラエラー:アクセス違反
#include <algorithm>
#define SIZE (1000)
struct S {
int *vect;
};
int main() {
struct S* s = static_cast<struct S*>(malloc(sizeof(struct S)));
s->vect = static_cast<int*>(malloc(sizeof(int) * SIZE));
for(int i = 0; i < SIZE; i++) {
s->vect[i] = i;
}
std::sort(s->vect, s->vect + SIZE);
}
コンパイラは、STDに関連する以下のエラーを返します::ソート私はVisual Studioのエンタープライズ2017年バージョン15.5.2およびインテルコンパイラー64ビットバージョン17.0.4.210を使用してい
1>C:\Program Files (x86)\Microsoft Visual
Studio\2017\Enterprise\VC\Tools\MSVC\14.12.25827\include\algorithm(3138):
error : access violation
1> return (pair<_RanIt, _RanIt>(_Pfirst, _Plast));
1> ^
を呼び出しますビルド20170411.
コードは、デフォルトのビジュアルスタジオコンパイラを使用して正常にコンパイルされました。
私が間違っていることが分かりません。
C++でデータ構造体を初期化する方法を見てみたいかもしれません。 'malloc'はすでにC++ではほとんど悪い習慣とみなされていますが、STLベクタを初期化するためにはまったく動作しません。 – Zinki
@Zinki STLベクターはありません(ただし、おそらく1つあります) – user463035818
何をしたいですか?なぜあなたは 'malloc'を使っていますか?なぜそれらすべてのキャスト?なぜ 'std :: vector'ではないのですか? – user463035818