char *cp = (char *) malloc(1);
strcpy(cp, "123456789");
puts(cp);
Run Code Online (Sandbox Code Playgroud)
gcc(Linux)和Visual C++ Express上的输出是"123456789",这是否意味着当有空闲内存时,我实际上可以使用比我分配的内容更多的内容malloc()?
为什么malloc(0)不导致运行时错误?
谢谢.
我是C的初学者,现在我正在学习指针和动态内存分配.我想编写一个简单的程序来创建空数组并检查给定数字是否存在.这是我的代码:
/* create an empty array pointer */
int* createArray(){
int *a = (int*) malloc(sizeof(int));
return a;
}
void findArrayElement(int *list, int element){
int i;
int len = (sizeof(list) / sizeof(int));
if (sizeof(list) == 0) {
printf("NO\n");
return;
}
for (i=0; i<len; i++) {
if (list[i] == element) {
printf("YES\n");
return;
}
}
printf("NO\n");
}
int main(int argc, const char * argv[]) {
int *p;
p = createArray();
printf("size of int is: %lu\n", sizeof(int));
printf("size of p is: %lu\n", sizeof(p)); …Run Code Online (Sandbox Code Playgroud)