teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

Update

2021/10/30 19:04

投稿

melian
melian

スコア21265

answer CHANGED
@@ -12,7 +12,6 @@
12
12
  g++ (Ubuntu 11.1.0-1ubuntu1~21.04) 11.1.0
13
13
  $ g++ -fsanitize=address -Wall -Wextra -g convert_unit.cc -o convert_unit
14
14
  $ printf '10\n1\n1\n' | ./convert_unit
15
-
16
15
  値を入力してください:変換する単位系を選択してください [1]力 [2]圧力 [3]トルク:元の単位を選択してください [1]N [2]kgf:
17
16
  =================================================================
18
17
  ==524401==ERROR: AddressSanitizer: stack-buffer-overflow on address 0x7ffcf4317df8 at pc 0x555de79884e0 bp 0x7ffcf4317cf0 sp 0x7ffcf4317ce0
@@ -32,11 +31,10 @@
32
31
  (longjmp and C++ exceptions *are* supported)
33
32
 
34
33
  SUMMARY: AddressSanitizer: stack-buffer-overflow convert_unit.cc:15 in power(double*)
35
- :
36
34
  ```
37
35
 
38
36
  15行目(`power()` 関数内)は以下になります。
39
- ```c
37
+ ```c++
40
38
  *(p+1) = (*ptr)*0.101972;
41
39
  ```
42
40
 
@@ -64,7 +62,7 @@
64
62
 
65
63
  修正するとすれば、最大限必要な容量を確保しておく(`double value[8];`)ことかと思います(`power()`, `pressure()` 関数のシグネチャも変更しておくとよいかもしれません)。
66
64
 
67
- ```c
65
+ ```c++
68
66
  int main() {
69
67
  double value[8];
70
68
  int num;