Sponsored Content
Top Forums Programming Merge two strings by overlapped region Post 302895979 by DGPickett on Thursday 3rd of April 2014 03:23:52 PM
Old 04-03-2014
Since all you need to reconstruct the last try is the length of str1 you used, it is easy to reconstruct the winner even though you need to go too far to find the limit. You might even use bisection to find the right number! If str1 has 6 bytes, try 3, then 1 or 5, then 0, 2, 4, 6 to find the highest substring that works. Use the shorter length of str1 and str2, as the max overlap is that length and the min is always 0.

I helps in C to know what is going on, at least in a sensible model. Imagine a char* in a 32 bit system is a 4 byte unsigned integer offset from the bottom of memory. Values in the environment are in the heap below free memory. The heap grows up like stalagmites. Subroutine arguments and auto variables are on the stack at the top of memory growing down like stalactites. When you call, automatics may have whatever old ram content in them, so write before you read. When you exit a subroutine, the stack pointer rises above the automatics and passed variables, and the space is reused/overwritten on the next call. When you create a static or global variable, the compiler/linker allocates it on the heap. When you malloc, that is on the heap, too. Since you can free, someone has to keep track of the holes and try to reuse them. Fancy items like structs and such may be allocated on a mod 4 or 8 address, for speed. Some CPUs need aligned variables -- 4 byte integers have to have mod-4 addresses. So, space can be wasted when little and big items are mixed. If you mmap() a file region, address space is allocated, but rather than setting it up to swap to swap space, it is tied to the file. Some people do not like calling everything at the bottom 'the heap'. Dynamically linked code is mmap'd into several places. Itmight have initialized variables and constants with it, which are put in different areas, sometimes because code is on executable pages but data may be not executable, even not writable. If you run a command under truss, tusc or strace, you can see all this going on -- very educational.
This User Gave Thanks to DGPickett For This Post:
 

10 More Discussions You Might Find Interesting

1. UNIX for Advanced & Expert Users

stack region

how can i determine that what percentage of stack region is currently is used? (i am using tru64 unix) (2 Replies)
Discussion started by: yakari
2 Replies

2. UNIX for Dummies Questions & Answers

Merge two strings not from files

str1="this oracle data base record" str2="one two three four five" Output: this one oracle two data three base four record five str1 and str2 have the same column but they are not fixed columns. I can do it with "paste" but I do not want to create file everytime the script runs from... (2 Replies)
Discussion started by: buddyme
2 Replies

3. UNIX for Advanced & Expert Users

Best practice - determining what region you are on

Hello all, I have a question about what you think the best practice is to determine what region you are running on when you have a system setup with a DEV/TEST, QA, and PROD regions running the same scripts in all. So, when you run in DEV, you have a different directory structure, and you... (4 Replies)
Discussion started by: Rediranch
4 Replies

4. Shell Programming and Scripting

Region between lines

How can I find the regions between specific lines? I have a file which contains lines like this: chr1 0 17388 0 chr1 17388 17444 1 chr1 17444 17599 2 chr1 17599 17601 1 chr1 17601 569791 0 chr1 569791 569795 1 chr1 569795 569808 2 chr1 569808 569890 3 chr1 569890 570047 4 ... (9 Replies)
Discussion started by: linseyr
9 Replies

5. UNIX for Dummies Questions & Answers

overlapped genomic coordinates

Hi, I would like to know how can I get the ID of a feature if its genomic coordinates overlap the coordinates of another file. Example: Get the 4th column (ID) of this file1: chr1 10 100 gene1 chr2 3000 5000 gene2 chr3 200 1500 gene3 if it overlaps with a feature in this file2: chr2... (1 Reply)
Discussion started by: fadista
1 Replies

6. AIX

Change lv REGION in HDISK1

Dears my rootvg is missed up i can not extend the /opt as soon as i try to extend the Filesystem its give me that there is not enough space . as there any way to change the REGION of the LVs in HDISK1 ? lspv -p hdisk0 hdisk0: PP RANGE STATE REGION LV NAME TYPE ... (8 Replies)
Discussion started by: thecobra151
8 Replies

7. Shell Programming and Scripting

Merge left hand strings mapping to different right hand strings

Hello, I am working on an Urdu to Hindi dictionary which has the following structure: a=b a=c n=d n=q and so on. i.e. Headword separated from gloss by a = I am giving below a live sample بتا=बता بتا=बित्ता بتا=बुत्ता بتان=बतान بتان=बितान بتانا=बिताना I need the following... (3 Replies)
Discussion started by: gimley
3 Replies

8. Programming

Perl script to merge cells in column1 which has same strings, for all sheets in a excel workbook

Perl script to merge cells ---------- Post updated at 12:59 AM ---------- Previous update was at 12:54 AM ---------- I am using below code to read files from a dir and print to excel. open(my $in, '<', $file) or die "Could not open file: $!"; my $rowCount = 0; my $colCount = 0;... (11 Replies)
Discussion started by: Jack_Bruce
11 Replies

9. Shell Programming and Scripting

Merge strings from a file into a template

I am preparing a morphological grammar of Marathi to be placed in open-source. I have two files. The first file called Adverbs contains a whole list of words, one word per line A sample is given below: आधी इतक इतपत उलट एवढ ऐवजी कड कडनं कडल कडील कडून कडे करता करिता खाल (2 Replies)
Discussion started by: gimley
2 Replies

10. Shell Programming and Scripting

Merge strings with ignore case

I have a bi-lingual database of a large number of dictionaries. It so happens that in some a given string is in upper case and in others it is in lower case. An example will illustrate the issue. toll Tax=पथ-कर Toll tax=राहदारी कर toll tax=टोल I want to treat all three instances of toll tax... (3 Replies)
Discussion started by: gimley
3 Replies
CHMEM(1)						      General Commands Manual							  CHMEM(1)

NAME
chmem - change memory allocation SYNOPSIS
chmem [+] [-] [=] amount file EXAMPLES
chmem =50000 a.out # Give a.out 50K of stack space chmem -4000 a.out # Reduce the stack space by 4000 bytes chmem +1000 file1 # Increase each stack by 1000 bytes DESCRIPTION
When a program is loaded into memory, it is allocated enough memory for the text and data+bss segments, plus an area for the stack. Data segment growth using malloc , brk , or sbrk eats up stack space from the low end. The amount of stack space to allocate is derived from a field in the executable program's file header. If the combined stack and data segment growth exceeds the stack space allocated, the pro- gram will be terminated. It is therefore important to set the amount of stack space carefully. If too little is provided, the program may crash. If too much is provided, memory will be wasted, and fewer programs will be able to fit in memory and run simultaneously. MINIX does not swap, so that when memory is full, subsequent attempts to fork will fail. The compiler sets the stack space to the largest possible value (for the Intel CPUs, 64K - text - data). For many programs, this value is far too large. Nonrecursive programs that do not call brk , sbrk , or malloc , and do not have any local arrays usually do not need more than 8K of stack space. The chmem command changes the value of the header field that determines the stack allocation, and thus indirectly the total memory required to run the program. The = option sets the stack size to a specific value; the + and - options increment and decrement the current value by the indicated amount. The old and new stack sizes are printed. SEE ALSO
install(1), brk(2). CHMEM(1)
All times are GMT -4. The time now is 04:26 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy