C 传递给函数的指针

C 传递给函数的指针,c,windows,mingw-w64,C,Windows,Mingw W64,当我使用这段代码时,不是从init()直接调用malloc(),而是在Windows 8下显示错误消息。 标准消息“程序…停止工作” 我的一些程序在windows 8下生成相同的代码。在Linux下,一切都很好。 win8的C语言与ANSI不兼容吗 FILE *dumpfile; double *cx; void init_var(double *ptr) { ptr = malloc (L*sizeof(double)); for (i=0; i<L; i++) ptr[

当我使用这段代码时,不是从init()直接调用malloc(),而是在Windows 8下显示错误消息。 标准消息“程序…停止工作”

我的一些程序在windows 8下生成相同的代码。在Linux下,一切都很好。 win8的C语言与ANSI不兼容吗

FILE *dumpfile;
double *cx;
void init_var(double *ptr) {
    ptr = malloc (L*sizeof(double));
    for (i=0; i<L; i++) ptr[i] = (double) i;
}

void init() {
//    cx = malloc (L*sizeof(double));
//    for (i=0; i<L; i++) cx[i] = i;
    init_var(cx);
    dumpfile = fopen( "dump.txt", "w" );
}
文件*dumpfile;
双*cx;
void init_var(双*ptr){
ptr=malloc(L*sizeof(双));

对于(i=0;i您正在函数内重新分配函数参数,但这不会改变调用方上下文中的参数。这是因为C是按值调用的

您必须传递
init_var()
cx的地址才能更改它:

void init_var(double **ptr)
{
  *ptr = malloc(L * sizeof **ptr);
  /* ... */
}

void init(void)
{
  init_var(&cx);
}