700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > c语言动态分配内存keil keil5中结构体分配内存问题

c语言动态分配内存keil keil5中结构体分配内存问题

时间:2022-08-05 10:23:31

相关推荐

c语言动态分配内存keil keil5中结构体分配内存问题

//头文件中的定义/

//纯C里面定义的布尔类型

typedef enum { False = 0, True = 1 }Bool;

//定义矩阵元素的类型为matrixType

typedef double matrixType;

//此结构体用来表示矩阵,其中row为行,column为列,height为高,array用来存放矩阵元素(用一维来模拟二维/三维)

typedef struct

{

unsigned introw, column, height;

matrixType *array; //使用时,必须对*array进行初始化

}Matrix;

///函数/

/*

matrix为要设置大小并分配内存的矩阵,row、column、height分别为行,列,高。

函数调用成功则则返回true,否则返回false

*/

Bool SetMatrixSize(Matrix *matrix, const unsigned int row, const unsigned int column, const unsigned int height)

{

unsigned int size = row* column * height * sizeof(matrixType);

if (size <= 0)

{

return False;

}

matrix->array = (matrixType*)malloc(size);

//如果分配内存成功

if (matrix->array)

{

matrix->row = row;

matrix->column = column;

matrix->height = height;

return True;

}

else

{

matrix->row = matrix->column = matrix->height = 0;

return False;

}

}

///主函数中调用,N=10/

Matrix A;

if(SetMatrixSize(&A, N, N, 1))

printf("矩阵A分配内存成功

");

问题是printf始终没执行,我将程序改一下

if(!SetMatrixSize(&A, N, N, 1))

printf("矩阵A分配内存成功

");

printf执行了,很是郁闷,这段代码我在vs验证了,没问题,在keil里就出现问题了,求各位大神求解

//头文件中的定义/

//纯C里面定义的布尔类型

typedef enum { False = 0, True = 1 }Bool;

//定义矩阵元素的类型为matrixType

typedef double matrixType;

//此结构体用来表示矩阵,其中row为行,column为列,height为高,array用来存放矩阵元素(用一维来模拟二维/三维)

typedef struct

{

unsigned introw, column, height;

matrixType *array; //使用时,必须对*array进行初始化

}Matrix;

///函数/

/*

matrix为要设置大小并分配内存的矩阵,row、column、height分别为行,列,高。

函数调用成功则则返回true,否则返回false

*/

Bool SetMatrixSize(Matrix *matrix, const unsigned int row, const unsigned int column, const unsigned int height)

{

unsigned int size = row* column * height * sizeof(matrixType);

if (size <= 0)

{

return False;

}

matrix->array = (matrixType*)malloc(size);

//如果分配内存成功

if (matrix->array)

{

matrix->row = row;

matrix->column = column;

matrix->height = height;

return True;

}

else

{

matrix->row = matrix->column = matrix->height = 0;

return False;

}

}

///主函数中调用,N=10/

Matrix A;

if(SetMatrixSize(&A, N, N, 1))

printf("矩阵A分配内存成功

");

问题是printf始终没执行,我将程序改一下

if(!SetMatrixSize(&A, N, N, 1))

printf("矩阵A分配内存成功

");

printf执行了,很是郁闷,这段代码我在vs验证了,没问题,在keil里就出现问题了,求各位大神求解

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。