Click here to Skip to main content
15,895,777 members
Please Sign up or sign in to vote.
1.00/5 (3 votes)
See more:
how can i extend the stack size from the command line
please compare this code

C
#include<stdio.h>
#define MAX_SOLS  25000000
#define MAX_COMBS 15000000
#define MAX_GRPS 1000
#define MAX_GRP_SIZE 3500
#define CONST_MAX_NUM_STRINGS 20
#define CONST_MAX_INPUT_STRING_LENGTH 600
#define CONST_MAX_MOTIF_STRING_LENGTH 19
#define CONST_MAX_MOTIF_STRING_COMPACT_LENGTH 6
#define CONST_MAX_HAMMING_DIST 7
int MinTable[CONST_MAX_MOTIF_STRING_LENGTH + 1][CONST_MAX_MOTIF_STRING_LENGTH + 1][CONST_MAX_MOTIF_STRING_LENGTH + 1][CONST_MAX_MOTIF_STRING_LENGTH + 1][CONST_MAX_MOTIF_STRING_LENGTH + 1][2];
int CombTable1_1[CONST_MAX_MOTIF_STRING_LENGTH + 1][CONST_MAX_MOTIF_STRING_LENGTH + 1][2];
int CombTable1_2[CONST_MAX_MOTIF_STRING_LENGTH + 1][CONST_MAX_MOTIF_STRING_LENGTH + 1][CONST_MAX_MOTIF_STRING_LENGTH + 1][2];
int CombTable1_3[CONST_MAX_MOTIF_STRING_LENGTH + 1][CONST_MAX_MOTIF_STRING_LENGTH + 1][CONST_MAX_MOTIF_STRING_LENGTH + 1][CONST_MAX_MOTIF_STRING_LENGTH +1][2];
char comb[CONST_MAX_MOTIF_STRING_LENGTH + 1];
char num_array[CONST_MAX_MOTIF_STRING_LENGTH + 1];
char dir[CONST_MAX_MOTIF_STRING_LENGTH + 1];
char dir_initial[CONST_MAX_MOTIF_STRING_LENGTH + 1];
char cur_perm[CONST_MAX_MOTIF_STRING_LENGTH + 1];

// Global variables for the group calculation
char grp_desc[MAX_GRPS][4];
int grp_index[CONST_MAX_MOTIF_STRING_LENGTH][CONST_MAX_MOTIF_STRING_LENGTH][CONST_MAX_MOTIF_STRING_LENGTH][CONST_MAX_MOTIF_STRING_LENGTH];
char tpos1[MAX_GRPS][MAX_GRP_SIZE][5][CONST_MAX_MOTIF_STRING_LENGTH];
int grp_strs[MAX_GRPS][MAX_GRP_SIZE][6];
int grp_counter[MAX_GRPS];
int tot_grps = 1;
int main(){

	printf("OK \n\n");

	return 0;
}


and the code

C
#include<stdio.h>
#define MAX_SOLS  25000000
#define MAX_COMBS 15000000
#define MAX_GRPS 1000
#define MAX_GRP_SIZE 3500
#define CONST_MAX_NUM_STRINGS 20
#define CONST_MAX_INPUT_STRING_LENGTH 600
#define CONST_MAX_MOTIF_STRING_LENGTH 19
#define CONST_MAX_MOTIF_STRING_COMPACT_LENGTH 6
#define CONST_MAX_HAMMING_DIST 7
int MinTable[CONST_MAX_MOTIF_STRING_LENGTH + 1][CONST_MAX_MOTIF_STRING_LENGTH + 1][CONST_MAX_MOTIF_STRING_LENGTH + 1][CONST_MAX_MOTIF_STRING_LENGTH + 1][CONST_MAX_MOTIF_STRING_LENGTH + 1][2];
int CombTable1_1[CONST_MAX_MOTIF_STRING_LENGTH + 1][CONST_MAX_MOTIF_STRING_LENGTH + 1][2];
int CombTable1_2[CONST_MAX_MOTIF_STRING_LENGTH + 1][CONST_MAX_MOTIF_STRING_LENGTH + 1][CONST_MAX_MOTIF_STRING_LENGTH + 1][2];
int CombTable1_3[CONST_MAX_MOTIF_STRING_LENGTH + 1][CONST_MAX_MOTIF_STRING_LENGTH + 1][CONST_MAX_MOTIF_STRING_LENGTH + 1][CONST_MAX_MOTIF_STRING_LENGTH +1][2];
char comb[CONST_MAX_MOTIF_STRING_LENGTH + 1];
char num_array[CONST_MAX_MOTIF_STRING_LENGTH + 1];
char dir[CONST_MAX_MOTIF_STRING_LENGTH + 1];
char dir_initial[CONST_MAX_MOTIF_STRING_LENGTH + 1];
char cur_perm[CONST_MAX_MOTIF_STRING_LENGTH + 1];

// Global variables for the group calculation
char grp_desc[MAX_GRPS][4];
int grp_index[CONST_MAX_MOTIF_STRING_LENGTH][CONST_MAX_MOTIF_STRING_LENGTH][CONST_MAX_MOTIF_STRING_LENGTH][CONST_MAX_MOTIF_STRING_LENGTH];
char tpos1[MAX_GRPS][MAX_GRP_SIZE][5][CONST_MAX_MOTIF_STRING_LENGTH];
int grp_strs[MAX_GRPS][MAX_GRP_SIZE][6];
int grp_counter[MAX_GRPS];
int tot_grps = 1;
int main(){
	int MinTable[CONST_MAX_MOTIF_STRING_LENGTH + 1][CONST_MAX_MOTIF_STRING_LENGTH + 1][CONST_MAX_MOTIF_STRING_LENGTH + 1][CONST_MAX_MOTIF_STRING_LENGTH + 1][CONST_MAX_MOTIF_STRING_LENGTH + 1][2];
	int CombTable1_1[CONST_MAX_MOTIF_STRING_LENGTH + 1][CONST_MAX_MOTIF_STRING_LENGTH + 1][2];
	int CombTable1_2[CONST_MAX_MOTIF_STRING_LENGTH + 1][CONST_MAX_MOTIF_STRING_LENGTH + 1][CONST_MAX_MOTIF_STRING_LENGTH + 1][2];
	int CombTable1_3[CONST_MAX_MOTIF_STRING_LENGTH + 1][CONST_MAX_MOTIF_STRING_LENGTH + 1][CONST_MAX_MOTIF_STRING_LENGTH + 1][CONST_MAX_MOTIF_STRING_LENGTH +1][2];
	char comb[CONST_MAX_MOTIF_STRING_LENGTH + 1];
	char num_array[CONST_MAX_MOTIF_STRING_LENGTH + 1];
	char dir[CONST_MAX_MOTIF_STRING_LENGTH + 1];
	char dir_initial[CONST_MAX_MOTIF_STRING_LENGTH + 1];
	char cur_perm[CONST_MAX_MOTIF_STRING_LENGTH + 1];

	// Global variables for the group calculation
	char grp_desc[MAX_GRPS][4];
	int grp_index[CONST_MAX_MOTIF_STRING_LENGTH][CONST_MAX_MOTIF_STRING_LENGTH][CONST_MAX_MOTIF_STRING_LENGTH][CONST_MAX_MOTIF_STRING_LENGTH];
	char tpos1[MAX_GRPS][MAX_GRP_SIZE][5][CONST_MAX_MOTIF_STRING_LENGTH];
	int grp_strs[MAX_GRPS][MAX_GRP_SIZE][6];
	int grp_counter[MAX_GRPS];
	int tot_grps = 1;

	printf("OK \n\n");

	return 0;
}





the first code working well and the second code face the run time error (Segmentation Fault)
i think the error from the stack overflow
how can extend the stack size?

[EDIT] Added <pre> tags for better readability - Code-o-mat [/EDIT]
Posted
Updated 5-May-12 11:45am
v2
Comments
Code-o-mat 5-May-12 17:47pm    
Why not allocate those huge buffers dynamically?
mostafa_bioinfo 5-May-12 17:52pm    
is it solve the problem?
please send the deceleration for these arrays dynamically.
Code-o-mat 6-May-12 4:06am    
Well, i won't go into trying to decypher your code and rewrite it, but here's one general way of doing it:

Instead of this:
int apple[2][3][4];
apple[1][2][3] = 10;

you can do e.g. this:
int *papple = new int[2 * 3 * 4];
typedef int TApple[2][3][4];
TApple &dapple = *(TApple *)papple;
dapple[1][2][3] = 10;
delete []papple; //don't forget to delete the dynamically allocated stuff
//when you are done with it

You could easily write a macro to reduce code size and the amount of typing to do it.
mostafa_bioinfo 6-May-12 15:03pm    
Thanks a lot for your response.
how can i send this arrays as a parameter of function?
plz the function definition and the function call
mostafa_bioinfo 6-May-12 20:05pm    
plz the same way can be used for the array of dem 4 if now what is the difference
char *tpo = new char [MAX_GRPS * MAX_GRP_SIZE * 5 * CONST_MAX_MOTIF_STRING_LENGTH]; typedef char tpos[MAX_GRPS][MAX_GRP_SIZE][5][CONST_MAX_MOTIF_STRING_LENGTH];
tpos &tpos1 = *(tpos *)tpo;

delete []tpo;

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900