相关疑难解决方法(0)

变量大小的Struct C++

这是在C++中制作可变大小结构的最佳方法吗?我不想使用vector,因为初始化后长度不会改变.

struct Packet
{
    unsigned int bytelength;
    unsigned int data[];
};

Packet* CreatePacket(unsigned int length)
{
    Packet *output = (Packet*) malloc((length+1)*sizeof(unsigned int));
    output->bytelength = length;
    return output;
}
Run Code Online (Sandbox Code Playgroud)

编辑:重命名变量名称和更改的代码更正确.

c++ struct variable-length

20
推荐指数
4
解决办法
2万
查看次数

使用C中的字符指针为结构分配内存

我今天很难修复代码,然后我遇到类似的东西:

typedef struct {
int a; 
int b; 
int c;
int d;
char* word;
} mystruct;

int main(int argc, char **argv){

    mystruct* structptr = malloc(sizeof(mystruct));
    if (structptr==NULL) {
        printf("ERROR!")
        ...
    }
    ...
    free(structptr);

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

代码由于事实而给出了大量内存错误,这char* word是一个可变长度的字符串,而malloc没有为它分配足够的内存.实际上它只是20 Bytes为整体分配struct.有没有解决这个问题的方法,而不是char*char word[50]什么?

c memory malloc struct pointers

9
推荐指数
1
解决办法
2万
查看次数

C动态内存分配如何工作

我找到了以下示例:

typedef struct {
    char * name;
    char age;
} person;

person * myperson = malloc(sizeof(person));

myperson->name = "John";
myperson->age = 27;
Run Code Online (Sandbox Code Playgroud)

(http://www.learn-c.org/en/Dynamic_allocation)

我想我在这个例子中分配了8个字节(sizeof(人)).因此,当我将"justatestfoobar"分配给myperson-> name时,我认为我炸毁了程序...

有人可以解释为什么以及如何运作?

c malloc pointers dynamic-memory-allocation

2
推荐指数
1
解决办法
174
查看次数