2 iseuwei ISEUWEI 于 2016.03.12 13:52 提问

结构体构成的栈初始化报错问题

char *str;似乎把这个写进结构体然后调用malloc()就报错了,各位有遇到过吗?是不是这样啊?

3个回答

AlbertoNo1
AlbertoNo1   2016.03.12 15:13
已采纳

结构体里包含指针类型时,动态申请结构体内存并不会报错,但是在使用之前要对这个指针类型申请指向的内存。

u010298834
u010298834   2016.03.12 15:11

我试了一下没报错啊!你是不是其他地方写的有问题?

ISEUWEI
ISEUWEI 我想把截屏发上来,怎么发呀,我是初学c语言
接近 2 年之前 回复
AlbertoNo1
AlbertoNo1   2016.03.12 15:19

#include "stdafx.h"
#include
#include

typedef unsigned int UINT32;
typedef unsigned short USHORT;
typedef unsigned char UCHAR;

typedef struct tagTest
{
USHORT usA;
USHORT usB;
UINT32 uiC;
UCHAR *pucBuff;

}Test_S;

int _tmain(int argc, _TCHAR* argv[])
{
Test_S *pstTest = NULL;

pstTest = (Test_S*)malloc(sizeof(Test_S));

if (NULL == pstTest)
{
    return 1;
}

pstTest->pucBuff = (UCHAR*)malloc(sizeof(UINT32));

if (NULL == pstTest->pucBuff)
{
    return 1;
}

*((UINT32*)(pstTest->pucBuff)) = 0x12345678;

printf("0x%x", *((UINT32*)(pstTest->pucBuff)));

free(pstTest->pucBuff);
free(pstTest);

getchar();
return 0;

}

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!