我在这里读了许多问题,其中一些关于c中free()函数的文章释放了未使用变量的内存.在我的情况下,我有以下代码块.
char *injectStrAt(char *str, char *strToIn, int pos)
{
char *strC = malloc(strlen(str) + strlen(strToIn) + 1);
strncpy(strC, str, pos);
strC[pos] = '\0';
strcat(strC, strToIn);
strcat(strC, str + pos);
return strC;
}
Run Code Online (Sandbox Code Playgroud)
我用上面的函数将一个字符串块注入一个数组.我正在malloc用来创造一个新的char*.在上述情况下我需要做free(strC)什么?建议请.
在我发布这个问题之前,我在几个地方搜索了这个问题.我真的找不到合适的答案.
我评估了两种方式......
$date = new DateTime()
Run Code Online (Sandbox Code Playgroud)
AMD
$date = new DateTime('NOW')
Run Code Online (Sandbox Code Playgroud)
是否必须为上述两者提供相同的结果,或者它们是否有任何不同的情况?
我是c编程语言的新手.我在centos linux系统下的同一目录下有以下文件.
game.c
game.h
main.c中
game.h
#ifndef GAME_
#define GAME_
extern void game (void);
#endif
Run Code Online (Sandbox Code Playgroud)
game.c
#include "game.h"
void game (void)
{
return 23;
}
Run Code Online (Sandbox Code Playgroud)
main.c中
#include "game.h"
int main (void)
{
game();
}
Run Code Online (Sandbox Code Playgroud)
当我使用以下命令编译时..
gcc main.c
Run Code Online (Sandbox Code Playgroud)
我收到如下错误消息..
/tmp/ccwIlBKt.o:在功能
main': main.c:(.text+0x7): undefined reference to游戏'collect2:ld中返回1退出状态
链接我的头文件的正确方法是什么?
嗨,在我的下面的代码测试realloc()我收到错误Aborted (Core dumped).
代码的输出如下
$ ./realloc
My Name // <<-- This works
Aborted (core dumped) // <<-- why this error occur?
Run Code Online (Sandbox Code Playgroud)
copyThis()第一次调用函数给出正确的结果并且不产生错误.以同样的方式,如果我copyThis()第二次打电话,它会出错.我不明白为什么会这样.任何人都可以指出问题出在哪里以及我应该做些什么调整?
代码如下
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
char *copyThis(char *str1, const char *str2, size_t size);
int main(void)
{
char *ptr1 = "My Name ";
char *ptr2 = "is Alice";
char *ptr3;
char *ptr4;
ptr3 = copyThis(ptr3, ptr1, strlen(ptr1) + 1); // This works
printf("%s\n", ptr3);
ptr4 = copyThis(ptr4, ptr2, strlen(ptr2) +1); …Run Code Online (Sandbox Code Playgroud)