質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

1回答

1091閲覧

c++のsegmentation fault エラーについてです。

shu_mai

総合スコア2

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2021/08/05 10:00

編集2021/08/05 10:04

c++についての質問です。
以下のコードのvector<ll> tがbool isOK関数内に宣言されているときはsegmentation faultエラーが出ないのですが、以下のように関数外で宣言しているときにsegmentation faultエラーが出てしまいました。この原因がわからず困っています。

c++

1#include <bits/stdc++.h> 2using namespace std; 3typedef long long ll; 4#define rep(i,a,b) for(int (i)=(a);(i)<(b);(i)++) 5 6int N; 7vector<ll> H(N),S(N),t(N,0); 8 9bool isOK(ll index){ 10 //vector<ll> t(N,0); 11 bool ch = true; 12 rep(i,0,N){ 13 if(index<H[i]) { 14 ch = false; 15 } 16 else { 17 t[i] = (index - H[i]) / S[i]; 18 } 19 } 20 sort(t.begin(),t.end()); 21 rep(i,0,N){ 22 if(t[i]<i) ch = false; 23 } 24 return ch; 25} 26 27ll binary_search(){ 28 ll left = -1; 29 ll right = 1LL << 60; 30 31 while(abs(right - left)>1){ 32 ll mid = (right +left)/2; 33 if(isOK(mid)) right = mid; 34 else left = mid; 35 } 36 return right; 37} 38 39int main(){ 40 cin >> N; 41 rep(i,0,N){ 42 ll a,b; 43 cin >> a >> b; 44 H.push_back(a); 45 S.push_back(b); 46 } 47 ll ans = binary_search(); 48 cout << ans << endl; 49} 50 51

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

c++

1int N; 2vector<ll> H(N),S(N),t(N,0);

Nはグローバル変数なので0で初期化されます。
その直後にvector<ll> t(N,0);が実行されるので、tのサイズは0になります。
サイズ0なのにt[i]にアクセスしようとして落ちています。

isOK内で定義するとうまくいくのは、isOK実行前にmaincin >> N;が実行されて、N0ではない値が設定されるためです。

投稿2021/08/05 10:15

actorbug

総合スコア2235

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

shu_mai

2021/08/05 10:22

とてもしっくりきました、ご丁寧に回答ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問