C 传递给函数的指针
当我使用这段代码时,不是从init()直接调用malloc(),而是在Windows 8下显示错误消息。 标准消息“程序…停止工作” 我的一些程序在windows 8下生成相同的代码。在Linux下,一切都很好。 win8的C语言与ANSI不兼容吗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[
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);
}