我不明白这里导致内存访问错误的原因。
我做了一个简单的例子来说明我的问题:
#include <stdlib.h>
typedef struct mycanvas {
void *pixels;
} mycanvas;
main()
{
void* testchunk;
testchunk = (void*) calloc (1024 * 768 * 4,sizeof(char));
struct mycanvas* new_canvas;
new_canvas->pixels=testchunk; //causes memory access error
}
需要更改哪些才能让它运行?这是Linux上的gcc。
答案 0 :(得分:3)
您从未初始化new_canvas
。最有可能的是,你想这样做:
struct mycanvas new_canvas;
new_canvas.pixels=testchunk;
答案 1 :(得分:0)
#include <stdlib.h>
typedef struct mycanvas {
void *pixels;
} mycanvas;
int main()
{
void* testchunk;
testchunk = (void*) calloc (1024 * 768 * 4,sizeof(char));
mycanvas *new_canvas = malloc(sizeof(struct mycanvas));
new_canvas->pixels=testchunk; //now everything is ok
return 0;
}
答案 2 :(得分:-1)
我想我现在想出来了:
#include <stdlib.h>
typedef struct mycanvas {
void *pixels;
} mycanvas;
main(){
void* testchunk;
testchunk = (void*) calloc (1024 * 768 * 4,sizeof(char));
struct mycanvas* new_canvas=(mycanvas*)malloc(sizeof(mycanvas));
new_canvas->pixels=testchunk;
}
感谢您的帮助!顺便说一句,因为我使用cpp我可以使用&#34; new&#34;而不是malloc。