亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫(kù)
最近訪問(wèn)板塊 發(fā)新帖
查看: 3297 | 回復(fù): 4
打印 上一主題 下一主題

[C] stack smashing detected [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2013-04-12 00:06 |只看該作者 |倒序?yàn)g覽
  1. #include <stdio.h>
  2. #define MAXLINE 10

  3. int getline1(char line[], int maxline);

  4. int main() {
  5.         int len;
  6.         char line[MAXLINE];

  7.         len = getline1(line, MAXLINE);
  8.         while (len > 0) {
  9.                 printf("main:%d\n", len);
  10.                 len = getline1(line, MAXLINE);
  11.         }
  12.        
  13.         return 0;
  14. }

  15. int getline1(char line[], int maxline) {
  16.         int len = 0;
  17.         int j = 0;
  18.         int c;
  19.         for (; (c = getchar()) != EOF && c!='\n'; ++len) {
  20.                 line[len] = c; [color=Red] //應(yīng)該是這里導(dǎo)致了 stack smashing detected[/color]
  21.                 if (len  < maxline - 2) {
  22.                         line[j] = c;
  23.                         ++j;
  24.                 }
  25.         }
  26.         if (c == '\n') {
  27.                 line[j] = c;
  28.                 j++;
  29.                 len++;
  30.         }
  31.         line[j] = '\0';
  32.         return len;
  33. }
復(fù)制代碼
運(yùn)行的的結(jié)果:
  1. bells@bells-VirtualBox ~/Desktop/c2/1 $ ./a.out < text.txt
  2. main:20
  3. main:10
  4. main:3
  5. *** stack smashing detected ***: ./a.out terminated
  6. Aborted
  7. bells@bells-VirtualBox ~/Desktop/c2/1 $
復(fù)制代碼
其中text.txt 的內(nèi)容:
  1. bells@bells-VirtualBox ~/Desktop/c2/1 $ cat text.txt
  2. jldjals;jfl;asjf;la
  3. zxcvbnmjk
  4. we
  5. bells@bells-VirtualBox ~/Desktop/c2/1 $
復(fù)制代碼
用gdb調(diào)試了好久,不明白為什么stack smashing detected
把for循環(huán)里的“l(fā)ine[len] = c;”這句去掉,就木有了。但是我覺(jué)得加上也木有關(guān)系的。
而卻stack smashing detected 是在main函數(shù)里,都已經(jīng)return 0之后,拋出的,請(qǐng)看:
  1. ...
  2. Breakpoint 2, main () at exercise17.c:12
  3. 12                        printf("main:%d\n", len);
  4. (gdb) c
  5. Continuing.
  6. main:3

  7. Breakpoint 1, main () at exercise17.c:13
  8. 13                        len = getline1(line, MAXLINE);
  9. (gdb) n
  10. 11                while (len > 0) {
  11. (gdb) print len
  12. $1 = 0
  13. (gdb) n
  14. 16                return 0;    [color=Red]//這里都已經(jīng)執(zhí)行完了[/color]
  15. (gdb) n
  16. 17        }
  17. (gdb) n
  18. *** stack smashing detected ***: /home/bells/Desktop/c2/1/a.out terminated  [color=Red]//這里為什么呢?[/color]

  19. Program received signal SIGABRT, Aborted.
  20. 0xb7fdd416 in __kernel_vsyscall ()
  21. (gdb)
復(fù)制代碼
請(qǐng)各位大俠指點(diǎn)下!!

論壇徽章:
1
程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-09-23 06:20:00
2 [報(bào)告]
發(fā)表于 2013-04-12 02:44 |只看該作者
#define MAXLINE 10

bells@bells-VirtualBox ~/Desktop/c2/1 $ ./a.out < text.txt
main:20
main:10
main:3

論壇徽章:
0
3 [報(bào)告]
發(fā)表于 2013-04-12 11:45 |只看該作者
??不明白,請(qǐng)細(xì)說(shuō)。回復(fù) 2# irp


   

論壇徽章:
0
4 [報(bào)告]
發(fā)表于 2013-04-12 16:36 |只看該作者
你最大是10,數(shù)據(jù)有20了

論壇徽章:
0
5 [報(bào)告]
發(fā)表于 2013-04-15 15:05 |只看該作者
嗯,我故意設(shè)置為10的。但是我覺(jué)得不應(yīng)該報(bào)錯(cuò)的。回復(fù) 4# pix77


   
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國(guó)互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過(guò)ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP