小编use*_*854的帖子

malloc()是否分配了一块连续的内存块?

我有一段由一位非常老的学校程序员编写的代码:-).它就是这样的

typedef struct ts_request
{ 
  ts_request_buffer_header_def header; 
  char                         package[1]; 
} ts_request_def; 

ts_request_def* request_buffer = 
malloc(sizeof(ts_request_def) + (2 * 1024 * 1024));
Run Code Online (Sandbox Code Playgroud)

程序员基本上正在研究缓冲区溢出概念.我知道代码看起来很狡猾.所以我的问题是:

  1. malloc总是分配连续的内存块吗?因为在这段代码中如果块不连续,代码将失败很长时间

  2. 执行free(request_buffer),它将释放malloc分配的所有字节,即sizeof(ts_request_def)+(2*1024*1024),或者只释放结构sizeof(ts_request_def)大小的字节

  3. 你是否看到这种方法有任何明显的问题,我需要与老板讨论这个问题,并想指出这种方法有任何漏洞

c malloc coding-style

35
推荐指数
6
解决办法
3万
查看次数

使箭头和删除键在KornShell命令行中起作用

我是Unix新手,正在使用sun solaris(我认为是v10).我把我的shell设置为KornShell(ksh).

我想知道如何在命令行中制作箭头键并删除键工作.我已经设置了-o emacs和退格键,但没有箭头键和删除键.

是否可以设置向上和向下箭头键以循环显示命令行历史记录?

unix shell ksh

18
推荐指数
3
解决办法
5万
查看次数

通过 Windows 套接字发送大于 1 MB 的大数据,即使用 Send 函数

我希望通过 Windows 套接字发送 API 发送大于 1 MB 的大消息。有没有一种有效的方法来做到这一点,我不想循环然后以块的形式发送数据。我在某处读到,您可以增加套接字缓冲区大小,这可能会有所帮助。有人可以详细说明一下吗?任何帮助表示赞赏

sockets windows

4
推荐指数
1
解决办法
5991
查看次数

你可以从jmeter运行Shell脚本或Windows批处理文件吗?

我有一个Windows批处理文件和一个shell脚本.jmeter是否具有运行shell脚本或bat文件的功能.也许一个插件左右?.

任何帮助表示赞赏

jmeter

3
推荐指数
1
解决办法
9846
查看次数

字符数组的最佳替代品

我们有一个数据结构

struct MyData
{
       int length ;
       char package[MAX_SIZE];  
};
Run Code Online (Sandbox Code Playgroud)

其中MAX_SIZE是固定值.现在我们想要更改它以支持大于MAX_SIZE的"无限"包长度.建议的解决方案之一是用指针替换静态数组,然后根据我们的要求动态分配大小

struct MyData
{
       int length ;
       char* package;  
};
Run Code Online (Sandbox Code Playgroud)

然后

package = (char*)malloc(SOME_RUNTIME_SIZE) ;
Run Code Online (Sandbox Code Playgroud)

现在我的问题是,这是满足要求的最有效方式还是有任何其他方法......可能使用STL数据结构,如可增长数组等.我们想要一个解决方案,其中大多数适用于静态字符数组的代码也适用于新结构.

c++ data-structures

2
推荐指数
1
解决办法
1392
查看次数

标签 统计

c ×1

c++ ×1

coding-style ×1

data-structures ×1

jmeter ×1

ksh ×1

malloc ×1

shell ×1

sockets ×1

unix ×1

windows ×1