malloc失败搞不定了
想把命令行参数保存在全局变量中,在其他地方用,结果有注释的一行会在malloc是失败,怎么回事啊?程序代码:
#include <stdio.h> #include <stdlib.h> #include <string.h> static int argnum; static char **argstrs; int main(int argc, char *argv[]) { argnum = argc; argstrs = (char **)malloc((argc-1)*sizeof(char *)); int k; for (k = 1; k < argc; k++) { int j=k-1; char *str = argv[k]; int slen = strlen(str); printf("%d: %s\t\t%d\n",k,str,slen); char *nstr=(char *)malloc(slen*sizeof(char));//传4个参数,最后一次此行会分配内存失败,不知道为什么 //printf("%s\n", nstr); strcpy(nstr, str); *(argstrs+j)=nstr; } return 0; }