- 论坛徽章:
- 0
|
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <map>
#include <vector>
using namespace std;
#define MAX_FIELD_NUM 50
#define FETCH_COUNT 50
#define MAX_FIELD_LEN 150
typedef char FIELD_ARRAY[FETCH_COUNT][MAX_FIELD_LEN];
int main()
{
int i,j;
char ***pStdValueBuff = (char ***)malloc(sizeof(char)*MAX_FIELD_NUM);
for(i=0;i<MAX_FIELD_NUM;i++)
{
pStdValueBuff[i] = (char **)malloc(sizeof(char)*FETCH_COUNT);
for (j=0;j<FETCH_COUNT;j++)
{
pStdValueBuff[i][j] = (char *)malloc(sizeof(char)*MAX_FIELD_LEN);
memset(pStdValueBuff[i][j],0,MAX_FIELD_LEN);
}
}
//char pStdValueBuff[MAX_FIELD_NUM][FETCH_COUNT][MAX_FIELD_LEN];
for(i=0;i<MAX_FIELD_NUM;i++)
{
for (j=0;j<FETCH_COUNT;j++)
{
printf("%d/%d\n",i,j);
strncpy(pStdValueBuff[i][j],"dafdafdf",MAX_FIELD_LEN);
}
}
} |
按照上述代码中开辟的值大小来做没有问题,但是如果把其中的MAX_FIELD_NUM,FETCH_COUNT,MAX_FIELD_LEN的值赋得太大的时候程序就会在strncpy时dowm掉.为了方便起见我没有添加free语句
大家看看这是为什么
[ 本帖最后由 jiangf 于 2009-9-17 17:15 编辑 ] |
|