c中这段代码的正确形式是什么?
char *x = malloc(100);
Run Code Online (Sandbox Code Playgroud)
码
#include <stdlib.h>
#include <stdio.h>
int main(){
char *x=malloc(100);
free(x);
//in c++
// char *x=new char[100];
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这是错误
1>------ Build started: Project: memory_leaks, Configuration: Debug Win32 ------
1>Build started 8/1/2010 2:32:21 PM.
1>PrepareForBuild:
1> Creating directory "c:\users\david\documents\visual studio 2010\Projects\memory_leaks\Debug\".
1>InitializeBuildStatus:
1> Creating "Debug\memory_leaks.unsuccessfulbuild" because "AlwaysCreate" was specified.
1>ClCompile:
1> memory_leaks.cpp
1>c:\users\david\documents\visual studio 2010\projects\memory_leaks\memory_leaks\memory_leaks.cpp(5): error C2440: 'initializing' : cannot convert from 'void *' to 'char *'
1> Conversion from 'void*' to pointer to non-'void' requires an explicit cast
1>
1>Build FAILED.
1>
1>Time Elapsed 00:00:00.64
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
Run Code Online (Sandbox Code Playgroud)
您有有效的C代码,但您正在尝试使用C++编译器进行编译.(事实上,如果你将源重命名为memory_leaks.c,你的开发环境可能会自动调用C编译器;用memory_leaks.cpp它来调用C++编译器.)
C和C++是不同的语言.C++看起来像C一样有额外的东西,因为它是从一种带有额外东西的C语言发展而来的.但它现在是它自己的语言.不要混淆它们.
特别是,如果您之前添加了一个强制转换malloc,您可能会获得编译的C++代码,但您将无法获得良好的C++代码.不要这样做:如果你是用C++编程,请使用new; 如果您使用C编程,请使用C编译器.
| 归档时间: |
|
| 查看次数: |
163 次 |
| 最近记录: |