05-25-2011
By using input++ you're iterating trough the character array (string), effectively changing the starting position. Once you reach the end, it doesn't point to the start of the allocated memory anymore, but to the address of the end of the string. Since it's not recognized as a valid allocated memory address, the C library can't free it.
Simply save the original address before you enter the loop, and free that address.
Side notes:
- Using scanf to read input is bad, since it can easily lead to a buffer overflow. Try entering 160 characters, and you'll see what I mean.
- This problem could easily be solved without a character array, counting the characters on the fly.
9 More Discussions You Might Find Interesting
1. UNIX for Dummies Questions & Answers
Hi Friends,
Can any of you explain me about the below line of code?
mn_code=`env|grep "..mn"|awk -F"=" '{print $2}'`
Im not able to understand, what exactly it is doing :confused:
Any help would be useful for me.
Lokesha (4 Replies)
Discussion started by: Lokesha
4 Replies
2. HP-UX
Hi people!
I've got this own library:
--------------------------------------------
Personal.h
--------------------------------------------
#ifdef __cplusplus
extern "C" {
#endif
#include <stdio.h>
#include <stdarg.h>
#include <string.h> ... (0 Replies)
Discussion started by: donatoll
0 Replies
3. Shell Programming and Scripting
hi people;
i have a text, iptables.txt and values are as follows inside: (seperators are TAB)
10.15.2.2 2 40 10.15.3.3 1 10 10.32.2.1 3 40 10.33.6.7 2 50
10.16.3.2 1 60 10.11.3.9 1 20 10.19.2.1 1 80
10.16.9.9 3 20
10.29.7.9 2 90 10.33.2.7 3 40
......
i... (5 Replies)
Discussion started by: gc_sw
5 Replies
4. Shell Programming and Scripting
Hi,
I have line in input file as below:
3G_CENTRAL;INDONESIA_(M)_TELKOMSEL;SPECIAL_WORLD_GRP_7_FA_2_TELKOMSEL
My expected output for line in the file must be :
"1-Radon1-cMOC_deg"|"LDIndex"|"3G_CENTRAL|INDONESIA_(M)_TELKOMSEL"|LAST|"SPECIAL_WORLD_GRP_7_FA_2_TELKOMSEL"
Can someone... (7 Replies)
Discussion started by: shis100
7 Replies
5. UNIX for Dummies Questions & Answers
I am trying to find lines in a text file larger than 3 Gb that start with a given string. My command looks like this:
$ look "string" "/home/patrick/filename.txt"
However, this gives me the following message:
"look: /home/patrick/filename.txt: File too large"
So, I have two... (14 Replies)
Discussion started by: shishong
14 Replies
6. Shell Programming and Scripting
Input file:
matrix-remodelling_associated_8____
aurora_interacting_1___
L20
von_factor_A_domain_1
ATP_containing_3B_
Desired output:
matrix-remodelling_associated_8
aurora_interacting_1
L20
von_factor_A_domain_1
ATP_containing_3B
I wanna delete/remove all the "_" that appears at... (2 Replies)
Discussion started by: perl_beginner
2 Replies
7. UNIX for Dummies Questions & Answers
How to use "mailx" command to do e-mail reading the input file containing email address, where column 1 has name and column 2 containing “To” e-mail address
and column 3 contains “cc” e-mail address to include with same email.
Sample input file, email.txt
Below is an sample code where... (2 Replies)
Discussion started by: asjaiswal
2 Replies
8. Homework & Coursework Questions
Use and complete the template provided. The entire template must be completed. If you don't, your post may be deleted!
1. The problem statement, all variables and given/known data:
I'm doing aproximation of derivative called five-point stencil. For every value of x, in interval , in step... (0 Replies)
Discussion started by: antonija
0 Replies
9. Shell Programming and Scripting
Hello.
System : opensuse leap 42.3
I have a bash script that build a text file.
I would like the last command doing :
print_cmd -o page-left=43 -o page-right=22 -o page-top=28 -o page-bottom=43 -o font=LatinModernMono12:regular:9 some_file.txt
where :
print_cmd ::= some printing... (1 Reply)
Discussion started by: jcdole
1 Replies
kmem(7) Miscellaneous Information Manual kmem(7)
NAME
kmem - perform I/O on kernel memory, based on symbol name
SYNOPSIS
DESCRIPTION
When used with a valid file descriptor for (kmemfd), can be used to manipulate kernel memory. The specifics of this manipulation depend on
the command given as follows:
Read mirk_buflen bytes of kernel memory starting at the address for mirk_symname into mirk_buf. rks is a pointer to a
structure, defined below.
Indirect read. Read bytes of kernel memory starting at the address for mirk_symname and use that as the address from which to
read mirk_buflen bytes of kernel memory into mirk_buf. rks is a pointer to a structure.
Write mirk_buflen bytes from mirk_buf into kernel memory starting at the address for mirk_symname. rks is a pointer to
a structure.
Indirect write. Read bytes of kernel memory starting at the address for mirk_symname and use that as the kernel memory address
into which mirk_buflen bytes from mirk_buf are written. rks is a pointer to a structure.
Increase the hold count by one for the dynamically loaded module whose name is given by
rks, a pointer to a character string, thereby preventing its unloading.
Decrease the hold count by one for the dynamically loaded module whose name is given by
rks, a pointer to a character string. If the count is thereby reduced to 0, the module becomes a candidate for
unloading.
The definition is:
RETURN VALUE
returns one of the following values:
Successful completion.
Failure.
is set to indicate the error.
ERRORS
In addition to the values described in ioctl(2), the also sets to one of the following values if the corresponding condition is detected.
modname does not represent a currently loaded module or this is an and the hold count is already 0.
kmemfd open on wrong minor device (i.e., not
kmemfd open for reading and this is an
symname not found.
modname is greater than characters long, or symname is greater that characters long.
SEE ALSO
getksym(2), ioctl(2), ioctl(5).
kmem(7)