char 配列を取り、コンピューターがテキストを入力しているように見せる小さなコードを書きました。簡単ですよね?しかし、私がそれを実行したとき、ターミナルは私にこれを教えてくれました:
*** stack smashing detected ***: ./TYPE terminated
======= Backtrace: =========
/lib/i386-linux-gnu/libc.so.6(__fortify_fail+0x45)[0xb759aeb5]
/lib/i386-linux-gnu/libc.so.6(+0x104e6a)[0xb759ae6a]
./TYPE[0x80486a9]
/lib/i386-linux-gnu/libc.so.6(__libc_start_main+0xf3)[0xb74af4d3]
./TYPE[0x8048591]
======= Memory map: ========
08048000-08049000 r-xp 00000000 08:01 1580147 /home/jeremy/Desktop/programming/cpp/Jumping into C++/TYPE
08049000-0804a000 r--p 00000000 08:01 1580147 /home/jeremy/Desktop/programming/cpp/Jumping into C++/TYPE
0804a000-0804b000 rw-p 00001000 08:01 1580147 /home/jeremy/Desktop/programming/cpp/Jumping into C++/TYPE
08a30000-08a51000 rw-p 00000000 00:00 0 [heap]
b7449000-b744b000 rw-p 00000000 00:00 0
b744b000-b7467000 r-xp 00000000 08:01 4195157 /lib/i386-linux-gnu/libgcc_s.so.1
b7467000-b7468000 r--p 0001b000 08:01 4195157 /lib/i386-linux-gnu/libgcc_s.so.1
b7468000-b7469000 rw-p 0001c000 08:01 4195157 /lib/i386-linux-gnu/libgcc_s.so.1
b7469000-b7493000 r-xp 00000000 08:01 4198259 /lib/i386-linux-gnu/libm-2.15.so
b7493000-b7494000 r--p 00029000 08:01 4198259 /lib/i386-linux-gnu/libm-2.15.so
b7494000-b7495000 rw-p 0002a000 08:01 4198259 /lib/i386-linux-gnu/libm-2.15.so
b7495000-b7496000 rw-p 00000000 00:00 0
b7496000-b763a000 r-xp 00000000 08:01 4198264 /lib/i386-linux-gnu/libc-2.15.so
b763a000-b763c000 r--p 001a4000 08:01 4198264 /lib/i386-linux-gnu/libc-2.15.so
b763c000-b763d000 rw-p 001a6000 08:01 4198264 /lib/i386-linux-gnu/libc-2.15.so
b763d000-b7640000 rw-p 00000000 00:00 0
b7640000-b7718000 r-xp 00000000 08:01 8786914 /usr/lib/i386-linux-gnu/libstdc++.so.6.0.16
b7718000-b7719000 ---p 000d8000 08:01 8786914 /usr/lib/i386-linux-gnu/libstdc++.so.6.0.16
b7719000-b771d000 r--p 000d8000 08:01 8786914 /usr/lib/i386-linux-gnu/libstdc++.so.6.0.16
b771d000-b771e000 rw-p 000dc000 08:01 8786914 /usr/lib/i386-linux-gnu/libstdc++.so.6.0.16
b771e000-b7725000 rw-p 00000000 00:00 0
b773e000-b7742000 rw-p 00000000 00:00 0
b7742000-b7743000 r-xp 00000000 00:00 0 [vdso]
b7743000-b7763000 r-xp 00000000 08:01 4198254 /lib/i386-linux-gnu/ld-2.15.so
b7763000-b7764000 r--p 0001f000 08:01 4198254 /lib/i386-linux-gnu/ld-2.15.so
b7764000-b7765000 rw-p 00020000 08:01 4198254 /lib/i386-linux-gnu/ld-2.15.so
bffc0000-bffe1000 rw-p 00000000 00:00 0 [stack]
abcdefghijklmnopqrstuvwxyzAborted (core dumped)
私は C++ を初めて使用し (C のバックグラウンドがあります)、スタック スマッシュやバックトレースが何であるかわかりません。あなたが私を助けることができれば、それは大いに役立ちます!コードは次のとおりです。
#include <iostream>
#include <ctime>
#include <cstdlib>
#include <unistd.h>
using namespace std;
void type(char letters[]);
int main(){
char letters[27] = "abcdefghijklmnopqrstuvwxyz";
system("clear");
type(letters);
return 0;
}
void type(char letters[]){
unsigned int wait = 30000000;
system("clear");
for(int i = 0; letters[i] != '\n'; i++){
usleep(wait)
cout << letters[i];
}
}