本文共 5272 字,大约阅读时间需要 17 分钟。
#include <stdio.h> main() { FILE* fp; int num; fp = fopen("./test.txt", "r"); if ( fp == NULL){ perror("Error:"); exit(-1); } fscanf(fp, "%d", &num); if ( num < 0 ){ printf("Error: the num should be greater than 0!\n"); exit(-1); } fclose(fp); } |
> ./hello **** Purify instrumented hello (pid 25698 at Wed Dec 10 22:29:33 2003) * Purify 2003.06.00 Solaris 2 (32-bit) Copyright (C) 1992-2002 Rational Software Corp. All rights reserved. * For contact information type: "purify -help" * Options settings: -follow-child-processes=yes -purify -windows=no \ -purify-home=/usr/rational/releases/purify.sol.2003.06.00 \ -gcc3_path=/usr/local/bin/gcc \ -cache-dir=/usr/rational/releases/purify.sol.2003.06.00/cache \ -demangle_program=/usr/local/bin/c++filt * License successfully checked out. * Command-line: ./hello **** Purify instrumented hello (pid 25698) **** ABR: Array bounds read: * This is occurring while in: strlen [rtlib.o] _doprnt [libc.so.1] printf [libc.so.1] main [hello.c:11] _start [crt1.o] * Reading 13 bytes from 0x8ea08 in the heap (1 byte at 0x8ea14 illegal). * Address 0x8ea08 is at the beginning of a malloc'd block of 12 bytes. * This block was allocated from: malloc [rtlib.o] main [hello.c:8] _start [crt1.o] Hello, World **** Purify instrumented hello (pid 25698) **** Current file de.ors in use: 5 FIU: file de.or 0: <stdin> FIU: file de.or 1: <stdout> FIU: file de.or 2: <stderr> FIU: file de.or 26: <reserved for Purify internal use> FIU: file de.or 27: <reserved for Purify internal use> **** Purify instrumented hello (pid 25698) **** Purify: Searching for all memory leaks... Memory leaked: 12 bytes (100%); potentially leaked: 0 bytes (0%) MLK: 12 bytes leaked at 0x8ea08 * This memory was allocated from: malloc [rtlib.o] main [hello.c:8] _start [crt1.o] Purify Heap Analysis (combining suppressed and unsuppressed blocks) Blocks Bytes Leaked 1 12 Potentially Leaked 0 0 In-Use 0 0 ---------------------------------------- Total Allocated 1 12 **** Purify instrumented hello (pid 25698) **** * Program exited with status code 13. * 1 access error, 1 total occurrence. * 12 bytes leaked. * 0 bytes potentially leaked. * Basic memory usage (including Purify overhead): 351348 code 101724 data/bss 8192 heap (peak use) 1272 stack * Shared library memory usage (including Purify overhead): 992 libpure_solaris2_init.so.1 (shared code) 280 libpure_solaris2_init.so.1 (private data) 1079516 libc.so.1_pure_p3_c0_111202132_58_32_1158500S (shared code) 31404 libc.so.1_pure_p3_c0_111202132_58_32_1158500S (private data) 2324 libdl.so.1_pure_p3_c0_111202132_58_32_4624S (shared code) 4 libdl.so.1_pure_p3_c0_111202132_58_32_4624S (private data) 14048 libinternal_stubs.so.1 (shared code) 940 libinternal_stubs.so.1 (private data) |