oracle 12 分配内存,使用动态分配的内存

使用动态分配的内存

许多程序依赖于动态分配的内存,它们使用诸如以下各项的功能:

malloc、valloc 和 alloca (C/C++)

new (C++)

堆栈局部变量 (Fortran)

MALLOC 和 MALLOC64 (Fortran)

必须小心确保程序不依赖于动态分配的内存的初始内容,除非内存分配方法明确地说明要设置初始值:例如,比较 malloc(3C) 手册页中对 calloc 和 malloc 的描述。

偶尔,使用动态分配的内存的程序似乎可以单独地正常运行,但是启用性能数据收集之后就会失败。症状可能包括意外的浮点行为、段故障或特定于应用程序的错误消息。

如果应用程序单独运行时未初始化的内存偶然设置为良性值,但应用程序与性能数据收集工具一起运行时未初始化的内存被设置为其他值,则会出现这种行为。发生这种情况时,问题不出在性能工具上。依赖于动态分配的内存内容的任何应用程序都具有潜在的错误:除非明确说明使用其他方式,否则操作系统将为动态分配的内存随机提供任意内容。即使目前操作系统会始终将动态分配的内存设置为某个值,但是将来在使用操作系统的后续修订版或将程序移植到其他操作系统时,这些潜在的错误会引起意外的行为。

下列工具可以帮助您找到这些潜在的错误:

f95 -xcheck=init_local

有关更多信息,请参见《Fortran 用户指南》或 f95(1) 手册页。

lint 实用程序

有关更多信息,请参见《C 用户指南》或 lint(1) 手册页。

dbx 下的运行时检查

有关更多信息,请参见《使用 dbx 调试程序》手册或 dbx(1) 手册页。

Rational Purify

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值